zoukankan      html  css  js  c++  java
  • unity IOC 的使用

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

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

  • 相关阅读:
    12_springmvc拦截器
    11_springmvc之RESTful支持
    10_springmvc JSON数据交互
    09_springmvc图片上传
    09_springmvc异常处理
    08_springmvc数据回显和@ModelAttribute注解详解
    Eclipse-----解决调试源码不进入断点问题
    JavaScript-----截取字符串的常用方法
    排序(Sort)-----冒泡排序
    SpringMVC探究-----常用获取传递参数的方法
  • 原文地址:https://www.cnblogs.com/ruiying/p/12670393.html
Copyright © 2011-2022 走看看