Unity控制反转的方法是什么
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Unity控制反转的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Unity控制反转的方法是什么"吧!控制反转上层不依赖下层,
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
云南咖啡
上海睿民互联网科技有限公司
互联网下的科技发展
互联网中国科技
互联网科技公司发展
互联网科技ppt模板
镁科技互联网资讯平台
衡水科技产业互联网平台
海南科技产业互联网平台
深圳市运趣互联网科技有限公司
互联网科技产品
武汉健翔互联网络科技有限公司
荆州市昕露互联网络科技有限公司
深圳市罗太互联网科技有限公司
珠海东科互联网科技有限公司
互联网科技品牌
互联网对科技影响
互联网科技大会大佬
10位科技互联网大佬
互联网科技创新方面的资料
互联网是第几次科技革命的成果
互联网与未来科技
唐信互联网科技 大连
融贸通互联网科技
深圳期待互联网科技
国外互联网科技网站
美国互联网前沿科技
链环科技传统企业怎么转型互联网
允成互联网科技有限公司融资
互联网对科技影响