东陵大盗电影版,阿路龟,山西视听网
简介
unity :是微软用c#实现的轻量级,可扩展的依赖注入容器。
控制反转:(inversion of control,缩写为ioc),是用来消减程序之间的耦合问题,把程序中上层对下层依赖,转移到一个第三方容器中来装配。
依赖注入:(dependency injection,缩写为di):我们向容器发出请求以后,获得这个对象实例的过程就叫依赖注入。
实现
使用nuget程序包添加引用:
输入unity.configuration搜索并下载会自动添加所需的包(unity.container,system.runtime.compilerservices.unsafe,unity.abstractions)
配置文件如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <configsections> <!--定义配置节处理程序与配置元素之间的关联。--> <section name="unity" type="microsoft.practices.unity.configuration.unityconfigurationsection,unity.configuration" /> </configsections> <unity> <containers> <container> <!--type为对象的名称,mapto为注入对象的名称 写法为用逗号隔开两部分,一是类的全部,包括命名空间,二是程序集名称--> <register type="yk.interface.ipms,yk.interface" mapto="yk.pms.xlp.bjaite,yk.pms.xlp.bjaite"> <lifetime type="singleton" /> <!--api接口--> <property name="url" value="*****"></property> <!--用户名--> <property name="username" value="*****" /> <!--密码--> <property name="userpassword" value="*****"/> </register> </container> </containers> </unity> </configuration>
配置文件初始化:
var configfilenames = directory.getfiles(@"d:\ykconfig", "*.config"); if (configfilenames.length != 1) { messagebox.show($@"d:\ykconfig文件夹里面必须只能一个配置文件,现在有{configfilenames.length}个"); return; } var filemap = new execonfigurationfilemap { execonfigfilename = configfilenames[0] }; //从config文件中读取配置信息 var configuration = configurationmanager.openmappedexeconfiguration(filemap, configurationuserlevel.none); //获取指定名称的配置节 var section = (unityconfigurationsection)configuration.getsection("unity"); //创建容器 var _uc = new unitycontainer(); //载入容器 section.configure(_uc);
在vmmainwindow里添加公共成员,并用 [dependency]在上方标记:
[dependency] public ipms pms { get; set; }
用registersingleton去注册:
_uc.registersingleton<vmmainwindow>();
最后使用resolve去解析:
var vmmain = uc.resolve<vmmainwindow>();
这样就获取到了容器里面的内容。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论