• Unity 使用


    1.Install:  

    Install-Package Unity.Container
    Install-Package Unity.Interception
    Install-Package Unity.Configuration

    2.Unity.config:

    configuration => configurations: 声明container

    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/>

     configuration => unity: 定义container

    <containers>
        <container name="DbContainer">
        <!--注册类写在此处-->
      </container> </containers>

    简单注册类:name在同一处理程序中可以注册多个相同类型的类信息

    <register type="Namespace.Interface,Assembly" mapTo="Namespace.ClassName,Assembly" name="paramName">

    简单注册类应用

    var instance = container.Resolve<InterfaceName>("paramName");

    构造函数实例配置信息

    <register type="DB.Interface.IDb,DB.Interface" mapTo="DB.MSSQL, DB.MSSQL" name="mssql">
      <constructor>
        <param name="param" type="paramType" value="default value" />
      </constructor>
    </register>

    泛型类配置

    <register type="Namespace.Interface.IGeneric[],Assembly" mapTo="Namespace.MyGeneric[],Assembly" />

    泛型接口类

    public interface IGeneric<T>
    {
      ……
    }

    public class MyGeneric<T>: IGeneric<T>
    {
      ……
    }

    泛型接口类应用

    IGeneric<int> generic = container.Resolve<IGeneric<int>>();

    3.Simple demo:  

    ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap
    {
      ExeConfigFilename = Path.Combine($"{AppDomain.CurrentDomain.BaseDirectory }unity.config")
    };
    Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
    UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);
    //创建容器
    IUnityContainer container = new UnityContainer();
    section.Configure(container, "DbContainer");

    to be continued...

    public interface IGeneric<T>
  • 相关阅读:
    web常用自动化库——selenium总结(转)
    前端框架面试题
    SpringBoot整合Knife4j展示更美观的API文档
    JUC- ThreadLocal学习笔记
    JUC-ThreadPool线程池的使用与学习
    Java8 新特性
    SpringBoot 整合FreeMarker进行邮件发送
    IDEA 打开别人的项目的是Maevn插件依赖出错问题处理
    Liunx常用指令备查
    第四次作业
  • 原文地址:https://www.cnblogs.com/liuxian/p/16328306.html
Copyright © 2020-2023  润新知