Интересно - я бы поставил абстракцию между BL и DAL до того, как я 'd сделать это для слоя презентации.
Подход, используемый в вашем другом вопросе, кажется разумным - почему бы вам просто не использовать его повторно?
- Да, вам нужна фабрика; но вы можете включить это в общий класс/сборку и вернуть его только
object
, который затем можно передать, когда он будет возвращен - например, в точке BL, где он вызывается.
- (для полноты) с использованием
Activator.CreateInstance()
(как вы использовали в своем другом вопросе) - это правильный путь.
- Для DAL я стараюсь использовать значения, хранящиеся в конфиге (в качестве аргументов для перехода на заводскую); не часто бывает так часто менять реализацию DAL, поэтому конфигурация работает хорошо для меня.
- Соблюдайте Interface Segregation Principle (ISP) при разработке контракта/абстракции между BL и DAL - если вы сделаете это правильно, вы сможете одновременно смешивать и комбинировать различные физические реализации DAL.
- Если вы храните DTO и завод в общей сборке (возможно, один и тот же), то легко повторно использовать их с BL и различными реализациями DAL - с предостережением, что вы держите этот общий класс лишенным зависимостей. Если вы это сделаете, вы сможете добавить/удлить возможности DAL без повторной компиляции и повторной развертывания всей системы.
Я не понимаю, почему кто-то голосует, чтобы закрыть это, это кажется совершенно хорошим вопросом. Он просит передовые методы и подходы к абстрагированию доступа к данным. Это похоже на то, что мы хотим способствовать. Может быть, немного переформулировать вопрос? – David
@ Давид: его предыдущий вопрос очень подробный, с довольно небольшим контекстом. Этого продолжения не хватает. OP получит гораздо лучшие ответы, ИМО, если он отредактирует свой предыдущий вопрос с этим. –