繁体   English   中英

c#Unity容器名称

[英]c# Unity Container Name

我想使用代码获取统一容器(使用Load Configuration创建)名称。

使用配置文件加载命名容器,我需要查看容器的名称。

可能吗?

谢谢!!!

您可以使用以下代码获取容器的名称( 如果您在配置文件中将其命名

#region StaticVariables
public static IUnityContainer unityContainer { get; set; }
#endregion

#region StaticMethod
static void Main(string[] args)
{
    var program = new Program();
    unityContainer = new UnityContainer().LoadConfiguration();

    foreach (var unityContainerRegistration in unityContainer.Registrations)
        Console.WriteLine($"{unityContainerRegistration.Name } | { unityContainerRegistration.RegisteredType} | { unityContainerRegistration.MappedToType} | { unityContainerRegistration.LifetimeManager.InUse }");
}
#endregion

配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/>
  </configSections>

  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <alias alias="IOperation" type="Unity.IOperation, Unity" />
    <alias alias="ILogger" type="Unity.ILogger, Unity" />
    <alias alias="ConsoleLogger" type="Unity.ConsoleLogger, Unity" />
    <alias alias="FileLogger" type="Unity.FileLogger, Unity" />
    <alias alias="AddOperation" type="Unity.AddOperation, Unity" />
    <alias alias="SubtractOperation" type="Unity.SubtractOperation, Unity" />
    <alias alias="MultiplyOperation" type="Unity.MultiplyOperation, Unity" />
    <alias alias="DivideOperation" type="Unity.DivideOperation, Unity" />
    <alias alias="QuotientOperation" type="Unity.QuotientOperation, Unity" />
    <alias alias="LoggingCallHandler" type="Logger.CallHandler.LoggingCallHandler, Unity" />
    <alias alias="LoggingInterceptionBehavior" type="Logger.InstanceInterception.LoggingInterceptionBehavior, Unity" />

    <namespace name="Unity" />
    <assembly name="Unity" />
    <sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Unity.Interception.Configuration"/>

    <container>
      <extension type="Interception"/>

      <!--<register type="LoggingCallHandler" />-->
      <register type="ILogger" mapTo="ConsoleLogger" />
      <register name="ApplicationLogger" type="ILogger" mapTo="ConsoleLogger" />
      <register name="+" type="IOperation" mapTo="AddOperation">
        <interceptor type="InterfaceInterceptor"/>
        <interceptionBehavior type="LoggingInterceptionBehavior"/>
      </register>
      <register name="-" type="IOperation" mapTo="SubtractOperation">
        <interceptor type="InterfaceInterceptor"/>
        <interceptionBehavior type="LoggingInterceptionBehavior"/>
      </register>
      <register name="*" type="IOperation" mapTo="MultiplyOperation" />
      <register name="/" type="IOperation" mapTo="DivideOperation" />
      <register name="%" type="IOperation" mapTo="QuotientOperation" />

      <register name="plus" type="IOperation" mapTo="AddOperation">
        <interceptor type="InterfaceInterceptor"/>
        <interceptionBehavior type="LoggingInterceptionBehavior"/>
      </register>
      <register name="minus" type="IOperation" mapTo="SubtractOperation">
        <interceptor type="InterfaceInterceptor"/>
        <interceptionBehavior type="LoggingInterceptionBehavior"/>
      </register>
      <register name="multiply" type="IOperation" mapTo="MultiplyOperation" />
      <register name="divide" type="IOperation" mapTo="DivideOperation" />
      <register name="remainder" type="IOperation" mapTo="QuotientOperation" />
    </container>
  </unity>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
</configuration>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM