首页 > 编程语言 > 详细

unity IOC 的使用

时间:2020-04-09 23:41:02      阅读:104      评论:0      收藏:0      [点我收藏+]

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

 

 至此简单的集成及使用完成了。

unity IOC 的使用

原文:https://www.cnblogs.com/ruiying/p/12670393.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!