Unity控制反转的方法是什么
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇内容主要讲解"Unity控制反转的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Unity控制反转的方法是什么"吧!控制反转上层不依赖下层,
千家信息网最后更新 2025年01月18日Unity控制反转的方法是什么
本篇内容主要讲解"Unity控制反转的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Unity控制反转的方法是什么"吧!
控制反转上层不依赖下层,而是依赖第三方依赖注入容器
上次的SimpleFactory就可以看做是第三方容器。学生student依赖SimpleFactory 而不直接依赖细节(Honor)
我们常用的第三方容器就是Unity,在VS中通过NuGet引入Unity的Dll,改造我们的Main方法
static void Main(string[] args) { { BasePhone honor = SimpleFactory.CreatePhone(); IPlayPhone student = SimpleFactory.CreateStudent(); student.PlayPhone(honor); IUnityContainer unityContainer = new UnityContainer(); unityContainer.RegisterType(); var studentUnity = unityContainer.Resolve (); studentUnity.PlayPhone(honor); //Honor honor = new Honor(); //Student student = new Student(); //student.PlayPhone(honor); //student.PlayPhone(lumiaPhone); //student.PlayApplePhone(applePhone); //student.PlayGalaxy(galaxy); //student.PlayHonor(honor); } Console.ReadKey(); }
再将代码改造下增加IPerson,Iiphone,IGame
public interface IPerson { Iiphone Iphone { get; set; } IGame Game { get; set; } } public class Student: BasePerson, IPerson { [Dependency] public Iiphone Iphone { get; set; } [Dependency] public IGame Game { get; set; } } public class Teacher: BasePerson, IPerson { [Dependency] public Iiphone Iphone { get; set; } [Dependency] public IGame Game { get; set; } }
public interface Iiphone { void UsePhone(); } public class Galaxy:BasePhone, Iiphone { public override void System() { Console.WriteLine("ANDROID"); } public void UsePhone() { Console.WriteLine("Galaxy"); } }
public interface IGame { void Game(); } public class SgsGame:IGame { public void Game() { Console.WriteLine("play 三国杀Game"); } } public class LolGame:IGame { public void Game() { Console.WriteLine("Play LoLGame"); } } static void Main(string[] args) { { IUnityContainer unityContainer = new UnityContainer(); unityContainer.RegisterType(); unityContainer.RegisterType (); unityContainer.RegisterType (); var studentUnity = unityContainer.Resolve (); studentUnity.Iphone.UsePhone(); studentUnity.Game.Game(); }
这里用的是依赖注入中的属性注入,属性注入在构造函数注入之后执行,而且需要增加[Dependency]这个特性,并且需要添加using Microsoft.Practices.Unity;的引用,所以大部分时候都用构造函数注入更方便, 还有方法注入项目中用的很少,在方法上加[InjectionMethod]特性
unity提供更灵活的用配置文件注册的方法 在项目配置文件增加
则Main函数修改
static void Main(string[] args) { { IUnityContainer unityContainer = new UnityContainer(); UnityConfigurationSection configuration = (UnityConfigurationSection)ConfigurationManager.GetSection(UnityConfigurationSection.SectionName); configuration.Configure(unityContainer, "defaultContainer"); var studentUnity = unityContainer.Resolve(); studentUnity.OutputIdentity(); studentUnity.Iphone.UsePhone(); studentUnity.Game.Game(); } Console.ReadKey(); }
到此,相信大家对"Unity控制反转的方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
方法
控制
函数
容器
第三方
内容
属性
文件
特性
项目
学习
改造
配置
实用
更深
三国
上层
中用
代码
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
ps4代理服务器
贵阳app软件开发服务商
服务器如果服主指令改不了怎么弄
战地1行动模式服务器
树莓派数据库
db2删除数据库
湖北数字化城管软件开发系统
华硕x99a 服务器内存
网络安全成长经典案例
账号密码服务器错误怎么回事
网安大队进企业开展网络安全宣传
软件开发工程师日语怎么说
为什么连接服务器之后没有目录
pubg账号服务器非常繁忙
惠山区电商网络技术服务合同
网络安全法有哪些法规
网络安全考研复试经验
陕西戴尔服务器续保检测
游戏软件开发心得
网络安全周2020年标语
灵山电信dns服务器
海南网络安全周
游戏服务器测速
邮件提示网络安全警告
放射科质控网络安全
小爱下载一个服务器
浙江嵌入式软件开发教程
就是中文科技期刊数据库吗
网络安全警告怎么关闭
小学生网络安全在我身边班会