从汇编(或模块)的角度来看,您如何看待Interface(1.assembly)及其实现(2.assembly)的分离?
通过这种方式,我们可以使用一些IoC容器来开发更多的去耦设计。 假设我们有一个程序集'A',它只包含接口。 然后我们有一个组件'B',它引用'A'并实现那些接口。它只依赖于'A'。
在程序集“C”中,我们可以使用IoC容器使用“B”中的对象依赖注入来创建“A”对象。 这样'B'和'C'完全没有意识到(不依赖)他们自己..
答案 0 :(得分:1)
我看到你得到了什么,但是将接口分成单独的dll的唯一原因是另一个项目是否会使用它们。
如果没有,并且同一个项目将使用相同的接口(但多次),则无需将它们分开。 IOC容器可以简单地使用同一程序集中的接口。
考虑:
Assembly 1: IFoo Assembly 2: IOC Container ConcreteFooOne : IFoo Assembly 3: IOC Container ConcreteFooTwo : IFoo
注意,在这种情况下,每个程序集中的IOC容器将负责获取每个IFoo
实例并为其分配正确的ConcreteFoo
。
这对接口有一个单独的程序集是有意义的。每个其他从属程序集(1和2)都可以使用IFoo接口。另一方面,如果ConcreteFooOne
和ConcreteFooTwo
在同一个程序集中,则不需要拆分IFoo
接口。通过在需要时切换具体实例,IOC容器仍然可以利用“即插即用”。
<强>更新强>
根据您的评论,您似乎担心将IOC容器绑定到na程序集。这不是问题,并且不要求将容器分离到单独的组件。如果有的话,我会把它当成代码气味,更不用说无意义的行为。