У меня есть решение, структурированное так:
- Сборка моделей
- Сборка данных - определяет интерфейсы репозитория и базовый класс репозитория
- Сборка ORM - реализует репозиторийинтерфейсы и наследует базовый класс репозитория ^
- Бизнес-сборка - содержит ссылку на сборку данных и динамически извлекает объект ORM через MEF (без явной ссылки на сборку ORM)
- сборка пользовательского интерфейса(s)
Таким образом, я могу легко заменить ORM, если мы решим заняться чем-то другим.
Мне интересно, возможно ли иметь подобную функциональностьс единством.Я хочу отделить свою бизнес-логику от базового ORM.Из того, что я прочитал, единство в основном работает во время компиляции, а MEF во время выполнения.При этом можно ли отделить единое целое таким образом, чтобы у моего бизнес-уровня не было ссылок на ORM, а были только интерфейсы, которые он реализует из сборки данных?Как Unity может определить, что реализует интерфейс без ссылки на реализующую сборку?
В настоящее время в MEF ни одна сборка не имеет ссылки на ORM (кроме случаев, когда бизнес-уровень динамически вытягивает его во время выполнения дляобнаружить детали и заполнить интерфейс объектом).Я бы предпочел продолжить работу в этом направлении и хотел бы знать, смогу ли я сделать это с Unity.