目录
显示
1、添加 Nuget 包引用
搜索并安装 Unity.Configuration 包,会自动添加依赖包(Unity.Container、Unity.Abstractions、 System.Runtime.CompilerServices.Unsafe):

2、准备配置文件
此处演示构造函数注入:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration" />
</configSections>
<unity>
<containers>
<container>
<!--将实现类与接口匹配-->
<register type="Zmm.CardRS.ICardRS, Zmm.Inteface" mapTo="Zmm.CardRS.Com.ACT, Zmm.Dll">
<!--生命周期:单例-->
<lifetime type="singleton" />
<!--构造函数注入-->
<constructor>
<!--构造函数参数1-->
<param name="comNo" value="5"></param>
<!--构造函数参数2-->
<param name="address" value="15"></param>
</constructor>
</register>
</container>
</containers>
</unity>
</configuration>
3、初始化容器
//定义.exe应用程序的配置文件映射;
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
//指定配置文件路径;
fileMap.ExeConfigFilename = Settings.Default.ConfigPath;
//配置文件类;
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
//Unity 的配置区;
UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection("unity");
//实例化容器;
IUnityContainer _UC = new UnityContainer();
//载入配置并注入;
_UC.LoadConfiguration(section);
//加上这句可显示注入时产生错误的详细信息;
_UC.AddExtension(new Diagnostic());
如果使用默认的 app.config,则可以简化为:
//使用默认的配置文件; _UC = new UnityContainer(); _UC.LoadConfiguration(); _UC.AddExtension(new Diagnostic());
4、使用注入的类
使用容器的 Resolve 方法取出要使用的类:
ICardRS _CardRS = _UC.Resolve<ICardRS>();
5、嵌套注入
新建一个类来测试嵌套注入的情况:
public class Test
{
[Unity.Dependency]
public ICardRS _CardRS;
}
类 Test 中添加了一个公共的(不能是私有的)成员,并使用 [Unity.Dependency] 特性标记,表明它需要注入。
然后可以用容器的 RegisterSingleton 方法注册 Test 类,使用时同样用 Resolve 方法取出:
_UC.RegisterSingleton<Test>(); Test test = _UC.Resolve<Test>();
调试时可以看到 Test 类中需要注入的成员已经自动注入了:

那么如果在 Test 类中的方法要使用它,则直接使用即可,无需再进行实例化或者解析(取出)操作。
原创文章,转载请注明: 转载自 独立观察员(dlgcy.com)
本文链接地址: [Unity 容器简单使用方法](https://dlgcy.com/unity-simple-use/)
关注微信公众号 独立观察员博客(DLGCY_BLOG) 第一时间获取最新文章
发表评论