Unity又称Unity Application Block
2016-07-18 20:44
483 查看
本文关注以下方面(环境为VS2012、.Net Framework 4.5以及Unity 3):
Ioc/DI简介;
Unity简单示例
一、Ioc/DI简介
IoC 即 Inversion of Control,DI 即 Dependency Injection,前一个中文含义为控制反转,后一个译为依赖注入,可以理解成一种编程模式,详细的说明可参见大牛Martin Fowler的强文 http://martinfowler.com/articles/injection.html,借用Hollywood的名言:Don't call us, we'll call you,意即你呆着别动,到时我会找你。控制反转的核心是控制权的转移,从原有的应用程序转移到框架如IoC容器,从而实现模块间的解耦。
Unity又称Unity Application Block,是微软P&P团队开发的一个轻量级、可扩展的依赖注入容器。它有助于构建松耦合的应用程序和为开发者提供以下便利:
简化对象的创建,特别在分层对象结构和依赖的情形下
它支持需求的抽象化,这允许开发人员在运行时或在配置文件中指定依赖,简化横切关注点(crosscutting concerns)的管理
它通过把组件配置推给容器来决定,增加了灵活性
服务定位能力; 这使客户端能够存储或缓存容器
关于Unity的详细介绍可移步微软官网 http://msdn.microsoft.com/en-us/library/dn170416.aspx
二、Unity简单示例
以Log日志为例
首先,简单定义日志接口
控制台日志实现类
添加Unity引用
在搜索框中输入Unity
点击Install即可完成安装。
注册(Register)和使用(Resolve)代码如下
运行效果如下:
三、Unity配置文件示例
代码container.RegisterType<ILog, ConsoleLog>()改成container.LoadConfiguration()即可,当然要包含Microsoft.Practices.Unity.Configuration命名空间,完整的代码如下
修改配置文件如下
运行,发现如下错误
不解,Google之发现configSections节点应该放在第一个位置,其它节点无所谓顺序。
再次运行,一切正常
转自:http://www.cnblogs.com/panchunting/p/Unity_Sample.html
Ioc/DI简介;
Unity简单示例
一、Ioc/DI简介
IoC 即 Inversion of Control,DI 即 Dependency Injection,前一个中文含义为控制反转,后一个译为依赖注入,可以理解成一种编程模式,详细的说明可参见大牛Martin Fowler的强文 http://martinfowler.com/articles/injection.html,借用Hollywood的名言:Don't call us, we'll call you,意即你呆着别动,到时我会找你。控制反转的核心是控制权的转移,从原有的应用程序转移到框架如IoC容器,从而实现模块间的解耦。
Unity又称Unity Application Block,是微软P&P团队开发的一个轻量级、可扩展的依赖注入容器。它有助于构建松耦合的应用程序和为开发者提供以下便利:
简化对象的创建,特别在分层对象结构和依赖的情形下
它支持需求的抽象化,这允许开发人员在运行时或在配置文件中指定依赖,简化横切关注点(crosscutting concerns)的管理
它通过把组件配置推给容器来决定,增加了灵活性
服务定位能力; 这使客户端能够存储或缓存容器
关于Unity的详细介绍可移步微软官网 http://msdn.microsoft.com/en-us/library/dn170416.aspx
二、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<ILog, ConsoleLog>(); var logger = container.Resolve<ILog>(); 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<ILog, ConsoleLog>(); container.LoadConfiguration(); var logger = container.Resolve<ILog>(); logger.Log("Hello, Unity Application Block"); Console.ReadKey(); } } }
修改配置文件如下
<?xml version="1.0"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" /> </configSections> <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> <assembly name="PCT.Unity.ConsoleAppSample" /> <namespace name="PCT.Unity.ConsoleAppSample" /> <container> <register type="ILog" mapTo="ConsoleLog" /> </container> </unity> </configuration>
运行,发现如下错误
不解,Google之发现configSections节点应该放在第一个位置,其它节点无所谓顺序。
<?xml version="1.0"?> <configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" /> </configSections> <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> <assembly name="PCT.Unity.ConsoleAppSample" /> <namespace name="PCT.Unity.ConsoleAppSample" /> <container> <register type="ILog" mapTo="ConsoleLog" /> </container> </unity> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> </configuration>
再次运行,一切正常
转自:http://www.cnblogs.com/panchunting/p/Unity_Sample.html
相关文章推荐
- 简单总结协程Coroutine及Yield常见用法
- unity3d中通过代码实现创建一堵墙的功能
- Unity中内嵌网页插件UniWebView使用总结
- unity3d中上下左右键控制移动
- Unity中的Path对应各平台中的Path
- Unity3D——使用UGUI制作小地图
- Unity3D——使用UGUI为角色添加名字和血条
- 关于Unity中的简易定时器
- 【unity插件】Rewired插件-unity3d实现主机、PC手柄震动Vibration
- Unity换装功能
- Unity3D之如何将包大小减少到极致
- Unity User Group 北京站图文报道:《Unity3D VR游戏与应用开发》
- Unity中添加组件的几种方法
- ue4类似unity多相机分屏与小地图效果实现教程
- HoloLens开发手记 - Unity之Keyboard input 键盘输入
- Unity官方文档之“图形性能优化-帧调试器”的翻译
- Unity&Shader基础篇-概述
- Oculus Unity Development Guide开发指南(转)
- Unity内存分析器
- Unity链接ADB测试流程