autofac笔记

寵の児 提交于 2020-02-11 21:22:34
 /// <summary>
    /// 数据源操作接口
    /// </summary>
    public interface IDataSource
    {
        /// <summary>
        /// 获取数据
        /// </summary>
        /// <returns></returns>
        string GetData();
    }

public class Oracle : IDataSource
    {
        public string GetData()
        {
            return "通过Oracle获取数据";
        }
    }

  class Sqlserver : IDataSource
    {
        public string GetData()
        {
            return "通过SQLSERVER获取数据";
        }
    }

 /// <summary> 
    /// 数据源管理类
    /// </summary
    public class DataSourceManager
    {

        IDataSource _ds;
        string Name;
        /// <summary>
        /// 根据传入的类型动态创建对象
        /// </summary>
        /// <param name="ds"></param>
        public DataSourceManager(string name, IDataSource ds)
        {
            _ds = ds;
            Name = name;
        }

        public string GetData()
        {
            return Name + ":" + _ds.GetData();
        }
    }


  public static void test3()
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<DataSourceManager>();
            builder.RegisterType<Sqlserver>().Named<IDataSource>("SqlServer");
            builder.RegisterType<Oracle>().Named<IDataSource>("Oracel");
            using (var container = builder.Build())
            {
                var ds = container.ResolveNamed<IDataSource>("Oracel");
                var manager = container.Resolve<DataSourceManager>(new NamedParameter("name", "STONE刘先生"), new NamedParameter("ds", ds));
                Console.WriteLine(manager.GetData());
                Console.ReadLine();
            }
        }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!