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

  • 相关阅读:
    Spring AOP中文教程《转》
    VBScript 转义字符
    Spring工作原理
    Struts+Hibernate+Spring工作原理及使用理由
    SQL Server中,varchar和nvarchar如何选择?<转>
    TSQL 游标使用
    oracle 与sql server临时表 比较《转》
    Oracle查询语法大全<转>
    B/S 模式 套打 的一种实现方式<转>
    基于Web的套打方案集粹<转>
  • 原文地址:https://www.cnblogs.com/piscesLoveCc/p/5506011.html
Copyright © 2011-2022 走看看