Unity控制反转的方法是什么
发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,本篇内容主要讲解"Unity控制反转的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Unity控制反转的方法是什么"吧!控制反转上层不依赖下层,
千家信息网最后更新 2025年02月22日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安全错误
数据库的锁怎样保障安全
湖南微购到家网络技术
合适的语音会议软件开发
阿里云 网络安全组
信宜网络安全活动下乡
助理软件开发工程师cdc
帝国cms检测不到数据库
网络安全工作汇报政法
呼和浩特互联网科技公司
福建省国家网络安全局局长
本地主机如何知道dns服务器
网络安全会影响到我们国家
合肥软件开发中心
高配服务器连接独立显卡
网络技术0基础视频
乌镇互联网大会发表黑科技
疫情防控期间网络安全措施
打印机显示重启打印服务器
南阳网络技术哪家强
BS程序直连数据库安全吗
ps4连不上服务器
安卓软件开发简单吗
软件开发分为哪些专业
江西现代软件开发价格表
神农架轿胃网络技术有限公司
米米的空岛服务器
苹果11怎么信任软件开发者
奖学金管理系统数据库的设计
网络安全人才稀缺
网络安全课程设计ppt
网络安全和北斗导航共有概念