如何选择已在 Unity 中注册Microsoft类型的实现

本文关键字:注册 Microsoft 类型 实现 Unity 何选择 选择 | 更新日期: 2023-09-27 18:36:11

>假设我有一个名为IPumaServices的接口,我有两个实现它的类:POSiXmlServices和TaXmlServices。

现在我有另一个接口叫做 IPumaNotification,实现它的类叫做 PumaNotification。 PumaNotification 的构造函数接收 IPumaServices 实现。

我的问题:在 Unity 中,如何注册一个在构造器中注入 POSiXmlServices 的 PumaNotification 实现和另一个注入 TaXmlServices 的实现?

这就是我到目前为止所拥有的。

using (_unityContainer = new UnityContainer())
            {
              _unityContainer
              .RegisterType<IPumaServices, POSiXmlServices>("POSiXml")
              .RegisterType<IPumaServices, TaXmlServices>("TaXml")
              .RegisterType<IPumaNotification, PumaNotification>();
            }

我不知道如何使其符合我上面的要求。

无法在线研究这个问题,因为我不确定如何描述我面临的问题。

我感谢任何帮助。

如何选择已在 Unity 中注册Microsoft类型的实现

您可以在构造函数中指定解析的参数,从而解析所需的实例:

using (_unityContainer = new UnityContainer())
        {
          _unityContainer
          .RegisterType<IPumaServices, POSiXmlServices>("POSiXml")
          .RegisterType<IPumaServices, TaXmlServices>("TaXml")
          .RegisterType<IPumaNotification, PumaNotification>(
              new InjectionConstructor(                        // Explicitly specify a constructor
                 new ResolvedParameter<IPumaServices>("TaXml") // Resolve parameter of type 
              );
        }

如果要注册两个IPumaServices,可以适当地命名每个,并在使用它们时按名称解析它们。

相关文章: