【转载】C#中可使用Unity容器实现属性注入
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【转载】C#中可使用Unity容器实现属性注入,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2231字,纯文字阅读大概需要4分钟。
内容图文
![【转载】C#中可使用Unity容器实现属性注入](/upload/InfoBanner/zyjiaocheng/806/6e14f53b9b7e44b98d98f7717dcb80d5.jpg)
简介
Unity :Unity是微软团队开发的一个轻量级,可扩展的依赖注入容器,为松散耦合应用程序提供了很好的解决方案,支持构造器注入,属性注入,方法注入。
控制反转:(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="命名空间,程序集名称" mapTo="命名空间,程序集名称"> <lifetime type="singleton" /> <!--Api接口--> <property name="Url" value="*****" /> <!--用户名--> <property name="UserName" value="*****" /> <!--密码--> <property name="UserPassword" value="*****"/> </register> </container> </containers> </unity> </configuration>
配置文件初始化:
var configFileNames = Directory.GetFiles(@"D:\某个文件夹", "*.config"); if (configFileNames.Length != 1) { MessageBox.Show($@"D:\‘某个文件夹’里面必须只能一个配置文件,现在有{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>();
这样就获取到了容器里面的内容。
备注:原文转载自博主个人站风景旧岑谙?,原文链接使用Unity容器实现属性注入。
内容总结
以上是互联网集市为您收集整理的【转载】C#中可使用Unity容器实现属性注入全部内容,希望文章能够帮你解决【转载】C#中可使用Unity容器实现属性注入所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。