请先阅读下面的帖子:
Circular reference between Assemblies in C# and Visual Studio 2005
实现接口解决了我的问题,但没有实现我的目标。
我的目标是只使用来自UI层/组件的BO层/组件。这样我就可以维护一个干净的层到层的引用。
因为我不希望在UI-layer/assembly中同时为BO-layer/assembly和ORMapper-layer/assembly添加引用。
我只想在UI层/程序集中使用BO层/程序集。
同时,有人建议我,它只能使用反射,而不是DI。这是真的吗?
发布于 2009-05-29 07:19:46
如果你真的坚持把ORM层的隐藏在BO层的后面,那么依赖注入应该仍然能够帮到你。请注意,您将无法从UI线程中引用DI库,因为那时您的业务对象将来自UI线程。
方法:
创建一个接口,其中包含加载数据以填充此接口的方法。在启动时,在您的ORM项目和
User object一个构造函数,该构造函数采用population接口的一个实例来从加载数据
然后,当您需要一个ORM对象时,您请求DI库创建它,DI库将构造User并为其提供对User实现的引用。您还必须向DI调用中注入一些属性,以使'username‘和'password’能够完全填充值。
注意,这并不是DI发明的目的……应用程序代码实际上应该直接处理ORM来创建/读取/更新/删除业务对象。
https://stackoverflow.com/questions/924693
复制相似问题