unity的依赖注入
2015-07-27 15:46
567 查看
参考文档
http://www.cnblogs.com/zhangchenliang/archive/2013/01/08/2850970.html http://www.tuicool.com/articles/yiUzQj
四种注入方式
注册和解析
http://www.cnblogs.com/zhangchenliang/archive/2013/01/08/2850970.html http://www.tuicool.com/articles/yiUzQj
IUnityContainer container = new UnityContainer(); #region 1.0 注册类型 container.RegisterType<IKiss, Boy>(); var boy = container.Resolve<IKiss>(); Girl gril = new Girl(boy); #endregion #region 2.0 注册实例 Boy boy2 = new Boy(); container.RegisterInstance<IKiss>(boy2); var boy3 = container.Resolve<IKiss>(); Girl gril1 = new Girl(boy3); #endregion #region 3.0 单例模式 /*boy4和boy5的属性dt相同, * 可以证明是单例*/ container.RegisterType<IKiss, Boy>(new ContainerControlledLifetimeManager()); var boy4 = container.Resolve<IKiss>(); var boy5 = container.Resolve<IKiss>(); #endregion #region 4.0 配置文档配置注册和解析 IUnityContainer container1 = new UnityContainer(); UnityConfigurationSection configuration = ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection; configuration.Configure(container1, "defaultContainer"); var boy6 = container1.Resolve<IKiss>(); #endregion #region 5.0 带名称的注册和解析 container.RegisterType<IKiss, Boy>("boy"); container.RegisterType<IKiss, Boy1>("boy1"); var boy7 = container.Resolve<IKiss>("boy1"); var list=container.ResolveAll<IKiss>(); #endregion
public interface IKiss { void Kiss(); } public class Girl { public IKiss boy; public Girl(IKiss boy) { this.boy = boy; } public void Kiss() { this.boy.Kiss(); Console.WriteLine("girl is kissing"); } } public class Boy : IKiss { public Boy() { this.dt = DateTime.Now; } public DateTime dt { get; set; } public void Kiss() { Console.WriteLine("boy is kissing"); } } public class Boy1 : IKiss { public Boy1() { this.dt = DateTime.Now; } public DateTime dt { get; set; } public void Kiss() { Console.WriteLine("boy1 is kissing"); } }
<configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <unity> <containers> <container name="defaultContainer"> <register type="DI.IKiss,DI" mapTo="DI.Boy,DI"/> </container> </containers> </unity> </configuration>
四种注入方式
public interface IPeople { void Live();} public interface IEat { void Eat();} public interface ISleep { void Sleep(); } public interface IPlay { void Play();} public class PlayBoy : IPeople { //构造函数注入 public IEat PEat { get; set; } //属性注入 [Dependency] public ISleep PSleep { get; set; } public IPlay PPlay { get; set; } public PlayBoy(IEat eat) { this.PEat = eat; } [InjectionMethod] public void Initialize(IPlay play) { this.PPlay = play; } public void Live() { this.PEat.Eat(); this.PSleep.Sleep(); this.PPlay.Play(); Console.WriteLine("playboy is walking"); } } public class BoyEat : IEat { public void Eat() { Console.WriteLine("eat rice and meat"); } } public class BoySleep : ISleep { public void Sleep() { Console.WriteLine("sleep at 12:00 and wake up at 8:00"); } } public class BoyPlay : IPlay { public void Play() { Console.WriteLine("play war3 and dota"); } }
注册和解析
IUnityContainer container = new UnityContainer(); container.RegisterType<IPeople, PlayBoy>(); container.RegisterType<IEat, BoyEat>(); container.RegisterType<ISleep, BoySleep>(); container.RegisterType<IPlay, BoyPlay>(); var p = container.Resolve<IPeople>(); p.Live();
相关文章推荐
- 【Unity游戏开发之一】Time.timeScale=0暂停游戏的情况下播放动画
- Unity中的Path对应各平台中的Path
- unity, unlit surface shader (texColor only surface shader)
- 讲解如何在Unity的Inspector面板中用滑动条来控制变量的大小
- Unity中添加AES加密
- Unity Array数组
- Unity导入FBX文件部分模型丢失材质的BUG
- Unity3d中Dictionary和KeyValuePair的使用
- 【Unity NGUI游戏开发之三】TweenPosition位移动画(二):相对于UIAnchor不同分辨率下的完美适配位移动画
- Unity 之 C# 利用回调函数实现C++匿名函数
- Unity3D研究院之手游开发中所有特殊的文件夹
- unity3d v5.1.1 ugui 带垂直滚动条的文本框
- 关于Unity实现游戏录制功能的思考
- unity之mipmap
- unity编辑器对对象属性的编辑
- Unity插件
- Unity中处理json数据(插件litjson和自带JsonUtility的两种)
- Unity打飞机小游戏
- [UnityShaderCookbook 读书笔记] [02] 光照模型
- [UnityShaderCookbook 读书笔记] [01] Unity Shader 基础