Unity依赖注入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity依赖注入相关的知识,希望对你有一定的参考价值。
一、简介
Unity是一个轻量级的可扩展的依赖注入容器,支持构造函数,属性和方法调用注入。Unity可以处理那些从事基于组件的软件工程的开发人员所面对的问题。构建一个成功应用程序的关键是实现非常松散的耦合设计。
二、使用
1、安装 Unity插件。
进入NuGet,输入Unity。在相应的项目安装。
2、config中代码配置。
在configSections中加入
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
在configuration中加入
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<container>
<register type="testunity.Models.IBook,testunity" mapTo="testunity.Models.ABook, testunity" />
</container>
</unity>
注意: type="testunity.Models.IBook,testunity" mapTo="testunity.Models.ABook, testunity"
testunity.Models.IBook是命名空间加类名
testunity是程序集的名称
3、把container封装到一个单列类中
-
/// <summary> /// 依赖注入对象 /// </summary> public class DIEntity { private static readonly DIEntity instance; private readonly IUnityContainer container; /// <summary> /// 单例私有静态锁 /// </summary> private static object unityLock = new object(); private DIEntity() { //注入配置对象 UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection(UnityConfigurationSection.SectionName); container = new UnityContainer(); section.Configure(container, "unityContainer"); } /// <summary> /// 单例 /// </summary> public static DIEntity Instance { get { if (instance == null) { lock (unityLock) { if (instance == null) { return new DIEntity(); } } } return instance; } } /// <summary> /// 获取注入容器 /// </summary> public object GetService(Type serviceType) { return _container.Resolve(serviceType); } /// <summary> /// 获取注入容器 /// </summary> public T GetService<T>() { return _container.Resolve<T>(); } }
4、使用
IRoleBll roleBll = DIEntity.Instance.GetService<IRoleBll>();
以上是关于Unity依赖注入的主要内容,如果未能解决你的问题,请参考以下文章