反射实例--动态创建实例

一、动态创建对象

1.新建一个接口:IDbHelper.cs

public interface IDbHelper
{
     void Query();
}

2.新建一个类:DbHelper.cs 继承 IDbHelper.cs 接口

public class DbHelper : IDbHelper
{
   public void Query()
   {
       Console.WriteLine($"这是一个{this.GetType().Name}的query方法");
   }
}

3.在配置文件里面新增节点

<appSettings>
    <add key="IDbHelerConfig" value="ReflectionDemo.Mysql,ReflectionDemo.Mysql.DbHelper"/>
</appSettings>

4.另外新建一个类,用于封装动态创建对象

public class SimpleFactory
{
        private static string config = ConfigurationManager.AppSettings["IDbHelerConfig"];
        public static IDbHelper CreateIntance()
        {
            //1.获取DLL
            Assembly assembly = Assembly.Load(config.Split(',')[0]);
            //2.获取特定的类型信息
            var type = assembly.GetType(config.Split(',')[1]);
            //3.创建对象
            object o = Activator.CreateInstance(type);
            //4.返回
            return (IDbHelper)o;
        }
}

5.新建一个控制台程序用于调用上面的代码

static void Main(string[] args)
{
    IDbHelper dbHelper = SimpleFactory.CreateIntance();
    dbHelper.Query();
}

6.输出结果

 

posted @ 2020-08-28 00:11  字里行间  阅读(158)  评论(0编辑  收藏  举报