链接的Unity注册方法

本文关键字:方法 注册 Unity 链接 | 更新日期: 2023-09-27 18:18:49

我最近开始了一个新的职位,继承了一些代码,我试图弄清楚它是如何工作的,以便重构应用程序。我以前使用过Unity,但对它所做的一切以及它是如何做到的并没有很好的理解。我看过很多教程,没有一个涉及到像这样的代码。有人能解释一下下面是怎么回事吗?

unityContainer.RegisterInstance(
                    "IntegrationEntityContent", 
                    ConfigurationManager.ConnectionStrings["IntegrationEntities"].ConnectionString,
                    new ContainerControlledLifetimeManager())                
              .RegisterType<IIntegrationEntities, IntegrationEntities>(
                    new HierarchicalLifetimeManager(),
                    new InjectionConstructor());

我知道RegisterInstance分发对象的单例实例,但它似乎只分发连接字符串的一个实例。我无法弄清楚的是IntegrationEntities类型如何从上述代码中获取连接字符串,以及应用程序每次请求一个时是否获得新的IntegrationEntities实例。

链接的Unity注册方法

unityContainer.RegisterInstance(
                    "IntegrationEntityContent", 
                    ConfigurationManager.ConnectionStrings["IntegrationEntities"].ConnectionString,
                    new ContainerControlledLifetimeManager()) 

此代码向ContainerControlledLifetimeManager对连接字符串进行命名注册,该注册将现有对象注册为单例实例。

unityContainer.RegisterType<IIntegrationEntities, IntegrationEntities>(
                    new HierarchicalLifetimeManager(),
                    new InjectionConstructor());
下一条语句将IntegrationEntities类注册为分层生命周期管理器。它类似于单例生命周期管理器,但将为子容器返回不同的实例(如果有的话)。

IntegrationEntities类型如何从中获取连接字符串以上代码

您可以通过其名称解析具体的注册。对于string类也是如此。我假设的构造函数IntegrationEntities有统一属性"IntegrationEntityContent",它允许Unity容器注入正确的连接字符串解析。

,如果应用程序正在获取一个新的IntegrationEntities实例每次它请求一个

通过这个配置,Unity将为每个容器返回相同的实例。如果你的容器有定义的子容器,那么它们将有自己的实例IntegrationEntities