我有一个结构如下的解决方案:
- 模型组装
- 数据组装 - 定义存储库接口和基本存储库类
- ORM 程序集 - 实现存储库接口并继承基本存储库类 ^
- 业务组装 - 引用数据组装,并通过 MEF 动态拉入 ORM 对象(不显式引用 ORM 组装)
- UI 程序集
以这种方式,如果我们决定使用其他东西,我可以轻松地更换 ORM。
我很好奇 Unity 是否可以提供类似的功能。我想将我的业务逻辑与底层 ORM 分离。根据我的阅读,统一主要在编译时工作,而 MEF 在运行时工作。话虽这么说,是否有可能以这样一种方式与统一解耦,即我的业务层没有对 ORM 的引用,而只是它从数据组装中实现的接口?Unity 如何在不引用实现程序集的情况下定义实现接口的内容?
目前,对于 MEF,没有任何程序集引用 ORM(除非业务层在运行时动态将其拉入以发现部件并用对象填充接口)。我更愿意继续沿着这些思路工作,并想知道我是否可以使用 Unity 做到这一点。