zoukankan      html  css  js  c++  java
  • 反射实例--动态创建实例

    一、动态创建对象

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

    将来的你,一定会感谢现在努力的自己!
  • 相关阅读:
    0626 Django模型(ORM)
    0625 Django 基础
    0530JavaScript基础2
    CentOS7.5安装cairo-dock,比mac托盘还美
    CentOS7.5安装与使用mysql-workbench
    CentOS7.6安装rime輸入法
    CentOS7.5 firefox Flash插件更新
    记一次ceph集群的严重故障
    ceph笔记(一)
    CentOS7.6打开的程序窗口居中
  • 原文地址:https://www.cnblogs.com/GreatPerson/p/13574946.html
Copyright © 2011-2022 走看看