c#DI统一容器如何解析依赖对象

c#DI统一容器如何解析依赖对象,c#,dependency-injection,unity-container,C#,Dependency Injection,Unity Container,我们有以下IPProduct和ILogger类的实现。管理器类被用作通信通道。我们使用了下面给出的unity来解决manager类,但它给出了以下错误- ===================unity configuration========== IUnityContainer container = new UnityContainer(); container.RegisterType<ILogger, FileLogger>("File"); container.Regi

我们有以下IPProduct和ILogger类的实现。管理器类被用作通信通道。我们使用了下面给出的unity来解决manager类,但它给出了以下错误-

===================unity configuration==========

IUnityContainer container = new UnityContainer();
container.RegisterType<ILogger, FileLogger>("File");
container.RegisterType<ILogger, BDLogger>("DB");

container.RegisterType<IProduct, ProductA>("productA");
container.RegisterType<IProduct, ProductB>("productB");

container.RegisterType<ProducManager>(new InjectionConstructor(container.Resolve<IProduct>("productA")));

container.Resolve<ProducManager>("productA");

========================================================

您需要为界面注册类型映射
ILogger
。否则Unity现在不知道应该使用哪个
ILogger实现(参见您的异常)

下面是一个注册接口
ILogger
并映射到
FileLogger
的示例:

_container.RegisterType<ILogger, FileLogger>();

IProduct product = _container.Resolve<ProductA>(); //ILogger is injected to Product
\u container.RegisterType();
IPProduct product=_container.Resolve()//ILogger被注射到产品中

添加了UNITY配置。谢谢Jehof。IPProduct有不同的产品实现,在特定的产品类中,我们需要使用一些其他类对象,如FileLogger,它们是从具有不同实现的接口派生的。当我们解析ProductA的ProductManager类时,我们希望解析FileLogger和ProductB DBLogger。请建议。然后您需要为ProductA做类似的注册,它有一个InjectionConstructor(container.Resolve(“File”))和ProductB。谢谢Tyler,您是对的。但最后我决定对ProductA、ProductB使用CI,而不是注册manager类。
_container.RegisterType<ILogger, FileLogger>();

IProduct product = _container.Resolve<ProductA>(); //ILogger is injected to Product