В приложении ETL я работаю, у нас есть три основных процесса:Как ограничить доступ к данным класса на основе состояния?
- Validate и разбора XML-файл информации о клиенте от третьей стороны
- значения Совпадение полученных в файле со значениями в нашей системе
- данные нагрузки клиентов в нашей системе
проблема здесь в том, что мы, возможно, потребуется, чтобы отобразить информацию о клиенте из любого или всех вышеуказанных состояний внутреннему пользователю, и есть данные в нашем классе клиента, который будет никогда не б e до того, как значения были сопоставлены в нашей системе (шаг 2). По этой причине, я хотел бы иметь значения даже не будут доступны для быть доступно, когда клиент находится в этом состоянии, и я хотел бы иметь, чтобы избежать какой-то повторяющейся логики повсюду, как:
if (customer.IsMatched) DisplayTextOnWeb(customer.SomeMatchedValue);
Моей первой мысль для этого нужно было добавить пару интерфейсов поверх клиента, которые будут раскрывать только свойства и поведение текущего состояния, а затем обрабатывать только эти интерфейсы. Проблема с этим подходом заключается в том, что, похоже, нет хорошего способа переходить с ICustomerWithNoMatchedValues на ICustomerWithMatchedValues, не делая прямых приведений и т. Д. (Или, по крайней мере, я не могу найти его).
Я не могу быть первым, кто столкнулся с этим, как вы обычно подходите к этому?
В качестве последнего предостережения, я хотел бы, чтобы это решение, чтобы играть хорошо с FluentNHibernate :)
Спасибо заранее ...