zoukankan      html  css  js  c++  java
  • Unity学习笔记(2):注册映射

    在上一篇文章中(认识Unity)中概要介绍了Unity和Ioc,本节主要介绍IoC中的注册映射,并使用代码和配置文件两种方式进行说明。

    定义依赖注入相关信息

    定义ILogger接口

        public interface ILogger
        {
            void Info(string message);
    
            void Warning(string message);
    
            void Error(string message);
    
            void Fatal(string message);
    
            void Exception(string message, Exception ex);
        }

    定义ServcieLog,实现ILogger

     public class ServiceLog : ILogger
        {
            public void Error(string message)
            {
                Console.WriteLine("Service Error");
            }
    
            public void Exception(string message, Exception ex)
            {
                Console.WriteLine("Service Exception");
            }
    
            public void Fatal(string message)
            {
                Console.WriteLine("Service Fatal");
            }
    
            public void Info(string message)
            {
                Console.WriteLine("Service Info");
            }
    
            public void Warning(string message)
            {
                Console.WriteLine("Service Warning");
            }
        }

    通过代码进行类型映射(RegisterType)

    RegisterType 包含多个支持泛型的重载,同时还包含了一一对应的非泛型重载。在此仅对其泛型重载进行阐述,非泛型重载与其对应。

    RegisterType 注册类型映射可以是注册接口或基类所对应的类型,也可以直接注册类型。对于前者,在此仅给出接口或基类注册的一种,另一种直接替换即可。

    RegisterType<TFrom, TTo>( )  

     IUnityContainer container = new UnityContainer();
    
     container.RegisterType<ILogger, ServiceLog>();

    RegisterType( Type TFrom,Type Tto)  

    IUnityContainer container = new UnityContainer();
    
    container.RegisterType(typeof(ILogger), typeof(ServiceLog));

    RegisterType<TFrom, TTo>(string name )  

     IUnityContainer container = new UnityContainer();
    
     container.RegisterType<ILogger, ServiceLog>("log1");

    RegisterType(Type TFrom,Type Tto,string name )  

    IUnityContainer container = new UnityContainer();
    
    container.RegisterType(typeof(ILogger), typeof(ServiceLog),"log1");

    更多重载方法,请自行查看源码。

    通过配置文件映射(App.config)

    配置section信息

    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />

    配置Unity信息

     <!--Begin Unity-->
      <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
        <sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration" />
        <!--容器-->
        <container>
          <register type="Unity.Aop.ILogger,Unity.Aop" mapTo="Unity.Aop.ServiceLog,Unity.Aop"></register>
        </container>
      </unity>
      <!--End Unity-->

    通过加装配置文件信息,进行映射

    var container = new UnityContainer();
    UnityConfigurationSection configuration = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

    本文链接: 文章作者:雨~桐 文章出处:http://www.cnblogs.com/piscesLoveCc/ 如果您觉得阅读本文对您有帮助,请点一右下角的“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Arthur J.Riel的61条面向对象设计的经验原则[ZT]
    06年的CS Sub,挺像考研考纲的。。平时学习的时候,可以参考一下~
    Interop时候.Net和Win32对应数据类型
    Asp.Net使用POST方法最简单的实现
    在MasterPage中实现本地化
    最近MS比较High。。。
    语无伦次一下~
    初试Mono~ Virtual Server 果然强大~
    电竟3周年了,纪念一下。。
    又见了点市面~
  • 原文地址:https://www.cnblogs.com/piscesLoveCc/p/5506011.html
Copyright © 2011-2022 走看看