目录
显示
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) 第一时间获取最新文章
发表评论