• C# Ioc容器Unity,简单实用


    开头先吐槽一下博客园超级不好用,添加图片后就写不动字了,难道是bug

    好进入正题,先来说下依赖注入,简单来说就是定义好接口,上层代码调用接口,具体实现通过配置文件方式去指定具体实现类。

    首先我们需要通过nuget来安装unity

    安装好后就可以写一个方法类去实现依赖注入

    public class UnityIocHelper : IServiceProvider
        {
            private readonly IUnityContainer _container;
            private static readonly UnityIocHelper dbinstance = new UnityIocHelper("DBcontainer");
            private UnityIocHelper(string containerName)
            {
                UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
                _container = new UnityContainer();
                section.Configure(_container, containerName);
            }
    
            public static UnityIocHelper DBInstance
            {
                get { return dbinstance; }
            }
            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);
            }
        }

    具体调用方法

    public static IDatabase Base(string connString)
            {
                return UnityIocHelper.DBInstance.GetService<IDatabase>(“MySql”, new ParameterOverride(
                  "connString", connString));
            }

    配置信息

    <unity>
      <typeAliases>
        <typeAlias alias="IDatabase" type="LRMC.Data.IDatabase,LRMC.Data" />
        <typeAlias alias="SqlServer" type="LRMC.Data.SqlDapper.Database,LRMC.Data.SqlDapper" />
        <typeAlias alias="MySql"     type="LRMC.Data.MySqlDapper.Database,LRMC.Data.MySqlDapper" />
      </typeAliases>
      <containers>
        <container name="DBcontainer">
          <!-- 默认数据库软件类型:SqlServer,MySql,Oracle,Access,SQLite-->
          <type type="IDatabase" mapTo="SqlServer" name="SqlServer"></type >
          <type type="IDatabase" mapTo="MySql" name="MySql"></type >
        </container>
      </containers>
    </unity>
    typeAlias 指定一个类的别名,
    <type type="IDatabase" mapTo="MySql" name="MySql"></type >就是
    IDatabase这个接口通过
    MySql(
    LRMC.Data.MySqlDapper.Database
    )这个类去实现。



                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           

  • 相关阅读:
    Centos7 yum缓存rpm安装包 规格严格
    基于postgresql行级锁for update测试 规格严格
    Web安全 Acunetix漏洞扫描工具.(破解版) 规格严格
    PostgreSQL 数组(Array) 规格严格
    oracle恢复broken的job,Oracle JOB异常中断原因分析 规格严格
    Eureka 与 zookeeper 的区别、原理及各自优缺点 规格严格
    Appenders 规格严格
    在windows下使用s3cmd和s3browser来管理amazon s3的笔记
    [python][flask] Flask 图片上传与下载例子(支持漂亮的拖拽上传)
    【转】评估分类模型的指标:ROC/AUC
  • 原文地址:https://www.cnblogs.com/lr215/p/5682940.html
Copyright © 2020-2023  润新知