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

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

  • 相关阅读:
    SP3267 DQUERY
    P3808 【模板】AC自动机(简单版)
    What Are You Talking About HDU
    【博客同步】【微信首发】GC-server的安装与使用
    博客园界面背景及一些特效设置
    C# 常用特性(Attribute)
    CRC常用参数模型及C#代码实现
    简单实用算法——字节位序反转
    C#串口开发之SerialPort类封装
    C#泛型的类型参数约束
  • 原文地址:https://www.cnblogs.com/ruiying/p/12670393.html
Copyright © 2011-2022 走看看