Unity容器应该在哪里创建,引用应该在哪里解决?

4

假设我有一个名为“哈希组件”的组件,其中包含一个名为IHash的服务契约。我有一个需要使用哈希的组件DLL。我们使用Unity创建松耦合系统。

我应该在组件DLL本身中创建Unity容器并解析引用吗?

还是应该在组件DLL构造函数中传递IHash引用,让调用组件DLL的人处理Unity容器和解析IHash?

public myComponentDLL(IHash Hasher) { }

如果我在组件DLL中创建容器并解析它,似乎Unity并没有给我带来太多好处。我认为通过构造函数传递容器会更有益。

除了上述两种方法,是否还有更好的方式?这是一种好的实践吗?


请不要在发布问题后一个小时内标记答案为已采纳。我对这个主题有很多话要说,但看到已经有一个被采纳的答案并不激励我写另一个答案——毕竟,显然你已经得到了你的答案或者至少是让你满意的东西。 - Sander
@Sander 我已经取消标记,正如所指出的,我对此还很新。 - Jon Raynor
2个回答

4

4

将unity传递给组件并不是一个好的做法,通过查看其构造函数,你无法知道它的依赖关系,因为它只会使用 IUnityContainer,而上帝只知道在构造函数中有多少解析。

最佳实践是通过构造函数传递接口(就像你所做的那样),并且在unity中使用组件接口来解析您的组件。在解析您的组件时,unity会选择IHash并注入它。


标记为答案,但如果你有其他要提供的内容,其他人也可以回答。谢谢。 - Jon Raynor
你最好将其保持为未被接受的状态一段时间,否则你的问题不会得到太多注意。 - anivas
抱歉,我在这方面还比较新。第一个问题已经取消标记了。 - Jon Raynor
刚刚完成了,我会先不管它几天,如果没有其他人回答,我会给你打勾。 - Jon Raynor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接