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

原文地址:https://www.cnblogs.com/piscesLoveCc/p/5506011.html