在Asp.NET MVC中使用Unity:
第一步:
NuGet
安装 unity、unity
第二步:
在Global.asax.cs的Application_Start方法中添加对UnityConfig.RegisterComponents()的调用
然后,Web API框架将使用Unity.WebAPI依赖解析程序来解析组件。
第三步:写一个静态类,完成注册解析:
public class UnityIocHelper : IServiceProvider { private readonly IUnityContainer _container; private static readonly UnityIocHelper instance = new UnityIocHelper("testContainer"); private UnityIocHelper(string containerName) { ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = HttpContext.Current.Server.MapPath("~/CfgFiles/Unity.Config");//找配置文件的路径 Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName); _container = new UnityContainer(); section.Configure(_container, containerName); } public static UnityIocHelper Instance { get { return instance; } } public object GetService(Type serviceType) { return _container.Resolve(serviceType); } public T GetService<T>() { return _container.Resolve<T>(); } public T GetService<T>(params ParameterOverride[] obj) { return _container.Resolve<T>(obj); } public T GetService<T>(string name, params ParameterOverride[] obj) { return _container.Resolve<T>(name, obj); } }
第四步,写配置文件
<configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/> </configSections> <unity> <containers> <container name="testContainer"> <register type="UnityIOCTest.IUserInfoService,UnityIOCTest" mapTo="UnityIOCTest.UserInfoService,UnityIOCTest"/> </container> </containers> </unity> </configuration>
第五步,使用
IUserInfoService service =UnityIocHelper.Instance.GetService<IUserInfoService>();
service.MethodInvoke();
至此简单的集成及使用完成了。