频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
使用Unity容器实现属性注入 - 风景旧岑谙? - 博客园
2019-05-25 20:02:58         来源:风景旧岑谙?  
收藏   我要投稿

使用Unity容器实现属性注入

简介

Unity :是微软用C#实现的轻量级,可扩展的依赖注入容器。

控制反转:(Inversion of Control,缩写为IoC),是用来消减程序之间的耦合问题,把程序中上层对下层依赖,转移到一个第三方容器中来装配。

依赖注入:(Dependency Injection,缩写为DI):我们向容器发出请求以后,获得这个对象实例的过程就叫依赖注入。

实现

使用NuGet程序包添加引用:

输入Unity.Configuration搜索并下载会自动添加所需的包(Unity.Container,System.Runtime.CompilerServices.Unsafe,Unity.Abstractions)

\

配置文件如下:



  
  
    

配置文件初始化:

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();

最后使用Resolve去解析:

var vmMain = UC.Resolve();

这样就获取到了容器里面的内容。

点击复制链接 与好友分享!回本站首页
相关TAG标签 - - 博客园
上一篇:c#验证Textbox输入的IP地址格式是否正确 - kkfans2019 - 博客园
下一篇:C#递归得到特定文件夹下问件 - 搬砖的L先生 - 博客园
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站