码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-09-07 19:08:28      阅读:44      评论:0      收藏:0      [点我收藏+]

标签:manager   程序   sem   OLE   文件   app   ace   ima   instance   

一、动态创建对象

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.输出结果

技术图片

 

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

标签:manager   程序   sem   OLE   文件   app   ace   ima   instance   

原文地址:https://www.cnblogs.com/GreatPerson/p/13574946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!