C# 应在何处创建Unity容器并解析引用?

C# 应在何处创建Unity容器并解析引用?,c#,design-patterns,unity-container,ioc-container,C#,Design Patterns,Unity Container,Ioc Container,假设我有一个名为hash的散列组件,其中包含一个名为IHash的服务契约。我有一个需要使用哈希的组件DLL。我们使用Unity创建一个松散耦合的系统 我应该创建Unity容器并解析组件DLL本身中的引用吗 或者我应该在组件DLL构造函数中传递IHash引用,让组件DLL的调用方处理Unity容器并解析IHash public myComponentDLL(IHash Hasher) { } 似乎如果我创建容器并在组件DLL中解析它,Unity并没有给我买太多东西。我认为在构造函数中传递它会带来

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

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

或者我应该在组件DLL构造函数中传递IHash引用,让组件DLL的调用方处理Unity容器并解析IHash

public myComponentDLL(IHash Hasher) { }
似乎如果我创建容器并在组件DLL中解析它,Unity并没有给我买太多东西。我认为在构造函数中传递它会带来更大的好处


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

将unity传递给组件不是一个好的实践,通过查看其构造函数,您不知道它的依赖关系,因为它只需要
IUnityContainer
,天知道构造函数中会有多少解析


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

应用程序中唯一应该引用IoC容器的地方是应用程序的根。在此处注册所有组件并解析程序的根组件。然后,Unity将满足根组件所需的所有依赖关系以及所有这些组件的依赖关系,依此类推,直到构建整个依赖关系图。有关更多信息,请参阅。

将此标记为答案,但如果您还有其他内容,其他人可以随时回答。谢谢。你最好暂时不要接受它,否则你的问题不会引起太多的注意。对不起,我对这个很陌生。提出的第一个问题。我没有做标记。刚刚做了,我会让它单独呆几天,如果没有其他人回答,给你打勾。请不要在发布问题一小时后将答案标记为已接受。关于这个话题,我有很多话要说,但看到一个已经被接受的答案并不能激励我写下另一个答案——毕竟,显然你已经有了答案,或者至少有一些让你满意的东西。@Sander,我没有标记,因为这是一个新发现。