博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity又称Unity Application Block
阅读量:5290 次
发布时间:2019-06-14

本文共 2651 字,大约阅读时间需要 8 分钟。

本文关注以下方面(环境为VS2012、.Net Framework 4.5以及Unity 3):

  • Ioc/DI简介;
  • Unity简单示例

一、Ioc/DI简介

  IoC 即 Inversion of Control,DI 即 Dependency Injection,前一个中文含义为控制反转,后一个译为依赖注入,可以理解成一种编程模式,详细的说明可参见大牛Martin Fowler的强文 ,借用Hollywood的名言:Don't call us, we'll call you,意即你呆着别动,到时我会找你。控制反转的核心是控制权的转移,从原有的应用程序转移到框架如IoC容器,从而实现模块间的解耦。

 

  Unity又称Unity Application Block,是微软P&P团队开发的一个轻量级、可扩展的依赖注入容器。它有助于构建松耦合的应用程序和为开发者提供以下便利:

  • 简化对象的创建,特别在分层对象结构和依赖的情形下
  • 它支持需求的抽象化,这允许开发人员在运行时或在配置文件中指定依赖,简化横切关注点(crosscutting concerns)的管理
  • 它通过把组件配置推给容器来决定,增加了灵活性 
  • 服务定位能力; 这使客户端能够存储或缓存容器

  关于Unity的详细介绍可移步微软官网 

    

二、Unity简单示例

  以Log日志为例

  首先,简单定义日志接口

namespace PCT.Unity.ConsoleAppSample{    interface ILog    {        void Log(string message);    }}

  控制台日志实现类

namespace PCT.Unity.ConsoleAppSample{    class ConsoleLog : ILog    {        public void Log(string message)        {            Console.WriteLine(message);        }    }}

添加Unity引用

在搜索框中输入Unity

点击Install即可完成安装。

注册(Register)和使用(Resolve)代码如下

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Practices.Unity;namespace PCT.Unity.ConsoleAppSample{    class Program    {        static void Main(string[] args)        {            //Register            var container = new UnityContainer();            container.RegisterType
(); var logger = container.Resolve
(); logger.Log("Hello, Unity Application Block"); Console.ReadKey(); } }}

运行效果如下:

 

三、Unity配置文件示例

  代码container.RegisterType<ILog, ConsoleLog>()改成container.LoadConfiguration()即可,当然要包含Microsoft.Practices.Unity.Configuration命名空间,完整的代码如下

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Practices.Unity;using Microsoft.Practices.Unity.Configuration;namespace PCT.Unity.ConsoleAppSample{    class Program    {        static void Main(string[] args)        {            //Register            var container = new UnityContainer();            //container.RegisterType
(); container.LoadConfiguration(); var logger = container.Resolve
(); logger.Log("Hello, Unity Application Block"); Console.ReadKey(); } }}

修改配置文件如下

运行,发现如下错误

不解,Google之发现configSections节点应该放在第一个位置,其它节点无所谓顺序。

再次运行,一切正常

 

转自:

转载于:https://www.cnblogs.com/ChineseMoonGod/p/5682593.html

你可能感兴趣的文章
Excel Vlookup多条件查询 , 列转行
查看>>
浅谈JS继承
查看>>
2018-2019-2 20175224 实验一《Java开发环境的熟悉》实验报告
查看>>
元素的offsetParent offsetLeft offsetTop属性
查看>>
NOI2015
查看>>
生成器表达式
查看>>
第三天运算符--三元操作符
查看>>
C#学习笔记-输入数据判断(int、double、string)
查看>>
uva 10881
查看>>
ubuntu node.js Binaries方式安装(二进制文件安装)
查看>>
Ansible Ad-Hoc Commands
查看>>
sql 修改字段小记
查看>>
现代浏览器的工作原理
查看>>
完美CSS文档的8个最佳实践
查看>>
扒一扒.NET Core的环境配置提供程序
查看>>
python基础之ATM-2
查看>>
《20170926-构建之法:现代软件工程-阅读笔记》
查看>>
js中for循环闭包问题记录
查看>>
关于xxx.h file not found 的问题
查看>>
CS224n学习资源汇总
查看>>