Unity Container
2013-12-08 23:07
393 查看
UnityContainer中的几种注册方式与示例
2013-12-0822:43by小白哥哥,22阅读,0评论,1.实例注册
最简单的注册方式就是实例注册,Unity容器负责维护对一个类型的单例引用,比如:有如下的实际类型:
namespaceConsoleSample { publicclassSampleClass { publicintReferenceCount{get;set;} publicvoidIncrease() { this.ReferenceCount++; } } }
使用UnityContainer的RegisterInstance方法对这个类型进行实例注册:
varcontainer=newUnityContainer(); SampleClasssampleClass=newSampleClass(); container.RegisterInstance(sampleClass);
而后,我们可以使用UnityContainer的Resolve方法对这个类型进行解析和调用:
SampleClassresolvedSampleClass1=(SampleClass)container.Resolve(typeof(SampleClass)); resolvedSampleClass1.Increase(); Console.WriteLine(resolvedSampleClass1.ReferenceCount); SampleClassresolvedSampleClass2=(SampleClass)container.Resolve(typeof(SampleClass)); resolvedSampleClass2.Increase(); Console.WriteLine(resolvedSampleClass2.ReferenceCount);
查看调用的结果,可以发现这里解析并调用的实同一个类的实例:
2.简单类型注册
更常见的类型注册是映射借口与实际类型,有如下接口与实现接口的类型:接口定义
namespaceConsoleSample { publicinterfaceIFuckUp { intIncreaseFlag(); } }
类型定义
namespaceConsoleSample { publicclassFuckUp { privateintflag=0; publicintIncreaseFlag() { flag++; returnflag; } } }
可以使用RegisterType<>方法对这个接口和实现类型进行映射:
varcontainer=newUnityContainer(); container.RegisterType<IFuckUp,FuckUp>();
而后使用Resolve<>方法对类型进行解析:
IFuckUpfuckUp1=container.Resolve<IFuckUp>();
Console.WriteLine(fuckUp1.IncreaseFlag());
IFuckUpfuckUp2=container.Resolve<IFuckUp>();
Console.WriteLine(fuckUp2.IncreaseFlag());
通过调用结果可以看出,此次解析两个类型时为创建的两个新的对象,我们使用了在1节中不同的方式对类型进行解析
看来又是一篇简单的笔记,快十一点要去锻炼身体了,下一篇写构造函数注入
相关文章推荐
- Unity3d vector3.forward和transform.forward的区别!
- Cloudera Community Forum: 用户分享和交流大数据技术的网上社区
- Unity Container中的几种注册方式与示例
- 总结使用Unity 3D优化游戏运行性能的经验
- 基于Unity3d 引擎的Android游戏优化
- BMFont中文字体图集制作的方法~(for unity ngui)
- Unity3D与android交互----构建android插件
- Unity3D的截屏函数
- 使用Unity创建依赖注入
- 【Unity3D】【NGUI】UIPlayAnimation
- 【Unity3D】【NGUI】UISprite
- 【Unity3D】【NGUI】UIKeyBinding
- Unity3D 中 2D_Toolkit插件下载 和 导入方法
- [unity3d]unity聊天功能
- [unity3d]unity聊天功能
- unity3D基础学习 通过判断鼠标点击的是否是目标物体,物体旋转,滑动滚轮缩放拉近视角
- 【Unity3D】【NGUI】UITable
- Unity3D学习之 ------------------------ "Hello Unity"控制角色移动
- 【Unity3D】【NGUI】UIGrid
- 【Unity3D】【NGUI】UIStretch