博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备
阅读量:4690 次
发布时间:2019-06-09

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

【声明】由于本人表达能力有限,为避免不必要的误人子弟,本文将不会涉及IOC与DI,仅仅描述新版本Unity 3的使用(非Unity 3D,如果您想看的是Unity 3D请立即离开,否则莫怪此处“谋财害命”)

【前言】看过本博客的都知道(说得好像是热门博客似的,我真没法控制自己的臭美之情),本人喜欢在进入正题前总会喜欢搞点前奏,那么此文将不会再胡言乱语。马上开始。。。

【Unity简介】在.NET中是一种非常流行的IoC框架,最新版本为Unity v3。

【环境】VS2012、.NET Framework 4.5、Unity v3。

【安装Unity v3】在你的项目中(无则新建Demo),如下图所示,

 

在弹出的窗口搜索“Unity”,

安装完之后可以管理解决方案中的项目是否使用Unity,如下图勾选或取消勾选即可。

当然也可以直接在官网下载然后引用,这也是之前常用的方式。

 

【Coding】我的代码包含一个接口(IRegionFormat)三个类(DefaultRegionFormat、

DayMonthYearRegionFormat、MonthDayYearRegionFormat),还有一个包含Main方法的类Program。

public interface IRegionFormat    {        string FormatName { get; }        string GetShortTimeString(DateTime time);    }    public class DefaultRegionFormat : IRegionFormat    {        public string FormatName        {            get { return "默认时间格式"; }        }        public string GetShortTimeString(DateTime time)        {            return time.ToString("yyyy-MM-dd");        }    }    public class DayMonthYearRegionFormat : IRegionFormat    {        public string FormatName        {            get { return "日月年格式"; }        }        public string GetShortTimeString(DateTime time)        {            return time.ToString("dd/MM/yyyy");        }    }    public class MonthDayYearRegionFormat : IRegionFormat    {        public MonthDayYearRegionFormat(string s)        {            Console.WriteLine("构造函数的参数:{0}", s);        }        public string FormatName        {            get { return "月日年格式"; }        }        public string GetShortTimeString(DateTime time)        {            return time.ToString("MM/dd/yyyy");        }    }
一个接口三个类
static void Main(string[] args)        {            //NoConfigUnity();            //ConfigUnity();            ParameterUnity();            Console.Read();        }        ///         /// 全编码方式注入        ///         static void NoConfigUnity()        {            IUnityContainer container = GetRegisterContainer();            IRegionFormat format1 = container.Resolve
(); WriteFormat(format1); } ///
/// 编码方式进行注入,此种方式无需在配置文件进行配置 /// static IUnityContainer GetRegisterContainer() { IUnityContainer container = new UnityContainer(); container.RegisterType
(); //container.RegisterType
(); //同一个接口注册两次,将以最后一次注册为准 return container; } ///
/// 通过配置文件进行注入 /// static void ConfigUnity() { IUnityContainer container = new UnityContainer(); UnityConfigurationSection section = ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection; //section.Configure(container, "defaultContainer"); section.Configure(container, "DayMonthYearContainer"); WriteFormat(container.Resolve
()); } ///
/// 构造方法含参数的注入 /// static void ParameterUnity() { IUnityContainer container = new UnityContainer(); UnityConfigurationSection section = ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection; section.Configure(container, "MonthDayYearContainer"); //构造函数包含非注入类型参数 container.RegisterInstance(typeof(string), "string类型注入"); //注册对象,以便于对构造函数调用的参数初始化指定值 WriteFormat(container.Resolve
()); } static void WriteFormat(IRegionFormat format) { if (format != null) { Console.WriteLine("格式名称:{0};当前时间:{1}" , format.FormatName, format.GetShortTimeString(DateTime.Now)); } }
包含Main方法的类Program
配置文件app.config

代码有注释,就不罗嗦拉。

【值得注意的是】 1. 注入的接口对象所属的类中包含构造函数,且构造函数包含未进行注入的参数类型(如string,如果非要问还有哪些属于,我的回答是我也不知道,但是只有object类型作为构造函数参数运行时是不报错的),则要进行“RegisterInstance”,如Program类中的ParameterUnity方法所示。

2. 配置文件是XML格式,切记区分大小写。

3.Unity 3 帮助文档:

  complex 地址: 

转载于:https://www.cnblogs.com/FreeDong/p/3179443.html

你可能感兴趣的文章
P2709 小B的询问
查看>>
PHP echo 和 print 语句
查看>>
第一讲 一个简单的Qt程序分析
查看>>
Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置
查看>>
poj 1979 Red and Black(dfs)
查看>>
【.Net基础03】HttpWebRequest模拟浏览器登陆
查看>>
zTree async 动态参数处理
查看>>
Oracle学习之常见错误整理
查看>>
lock_sga引起的ksvcreate :process(m000) creation failed
查看>>
数据库插入数据乱码问题
查看>>
altium annotate 选项设置 complete existing packages
查看>>
【模式识别与机器学习】——SVM举例
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>
Mysql 模糊匹配(字符串str中是否包含子字符串substr)
查看>>
python:open/文件操作
查看>>
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>