码迷,mamicode.com
首页 > 编程语言 > 详细

IOC框架之 Unity 入门

时间:2018-05-16 16:32:31      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:工作   轻量   prope   学无止境   inject   image   技术   http   博客   

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

Unity是什么?

Unity是patterns & practices团队开发的一个轻量级、可扩展的依赖注入容器,具有如下的特性:

1. 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能还包含了其它被依赖的对象实例。

2. Unity允许将预先配置的对象注入到类中,实现了inversion of control (IoC)的功能。在Unity中,支持constructor injection(构造器注入), property setter injection(属性设值注入)以及method call injection(方法注入)。ps:这里的方法注入与Martin Fowler定义的接口注入类似而稍有区别。

3. 支持容器的体系结构。一个容器可以有子容器,允许从子容器到父容器的对象定位查询。

4. 可以通过配置文件进行准备和配置容器。

5. 不会影响到类的定义(属性设值注入和方法注入除外),这也是轻量级容器的一个体现。

6. 支持自定义的容器扩展。

使用Unity,最基本步骤有三步。

1. 建立容器;

2. 将接口与类的映射注册到容器中;

3. 从容器中解析出正确的对象。

为了接下来的说明,我们先编写几个后面需要的接口和类:

准备工作:ILogger 接口

    public interface ILogger
    {
        void Log(string msg);
    }

继承上述接口的子类

    public class DBLogger : ILogger
    {
        public void Log(string msg)
        {
            Console.WriteLine("数据库记录消息为:" + msg);
        }
    }

    public class FileLogger : ILogger
    {
        public void Log(string msg)
        {
            Console.WriteLine("日志文件记录消息为:" + msg);
        }
    }

Step1. 创建对象容器

在Unity中创建容器实例最简单的方法是直接使用构造函数创建,如下代码所示:

IUnityContainer container = new UnityContainer();

Step2. 注册接口映射

在Unity中提供了一组Register方法供我们在容器中注册接口映射,如下代码所示:

 container.RegisterType<ILogger, DBLogger>();

Step3. 获取对象实例

在Unity中提供了一组Resolve方法用以获取对象实例,如下代码所示:

var logger = container.Resolve<ILogger>();

OK,就这么简单!

测试如下:

    class Program
    {
        static void Main(string[] args)
        {
            //
            IUnityContainer container = new UnityContainer();
            container.RegisterType<ILogger, DBLogger>();
            var logger = container.Resolve<ILogger>();
            logger.Log("孙行者:看我72变");
            //
            container.RegisterType<ILogger, FileLogger>();
            logger = container.Resolve<ILogger>();
            logger.Log("二郎神:看我73变");
            Console.ReadKey();
        }
    }

输出如下:

技术分享图片

简单的入门,不作过多阐述,

@陈卧龙的博客

IOC框架之 Unity 入门

标签:工作   轻量   prope   学无止境   inject   image   技术   http   博客   

原文地址:https://www.cnblogs.com/chenwolong/p/Unity.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!