zoukankan      html  css  js  c++  java
  • 反射2

    1.我的随笔

      简单工厂模式、反射  都有写到一些反射

    2.设计一个可配置是sql Helper

      这里只说明一下反射的大体框架

      

      写一个接口,定义插入和更新操作

    namespace ConsoleApp1
    {
        public interface IDBHelper
        {
            void insert();
            void update();
        }
    }

       1)类库DB.Mysql定义一个DBHelper 

    namespace DB.MySql
    {
        public class DBHelper : IDBHelper
        {
            public void insert()
            {
                Console.WriteLine("Mysql insert");
            }
            public void update()
            {
                Console.WriteLine("Mysql update");
            }
        }
    }

      指定生成文件的位置,为了方便操作,我们存在在执行exe的目录里面(文件夹会自动生成,不需要我们自己新建,定义好输出路径就行)

      

      定义输出路径

    ..ConsoleApp1inDebugDB.MySql

      2)同理,Oracle的操作也一样

      类库DB.Oracle定义一个DBHelper 

        public class DBHelper : IDBHelper
        {
            public void insert()
            {
                Console.WriteLine("Oracle insert");
            }
            public void update()
            {
                Console.WriteLine("Oracle update");
            }
        }

      定义输出路径

    ..ConsoleApp1inDebugDB.Oracle

      3)主程序

    namespace ConsoleApp1
    {
        class Program
        {
            static string db = ConfigurationManager.AppSettings["db"];
            static void Main(string[] args)
            {
                Assembly assembly = Assembly.LoadFile(DllPath());//反射的入口
                IDBHelper helper = (IDBHelper)Activator.CreateInstance(assembly.GetType($"{db}.DBHelper"));
                helper.insert();
                Console.ReadLine();
            }
            /// <summary>
            /// 加载dll路径
            /// </summary>
            /// <returns></returns>
            static string DllPath()
            {
                var path = Application.ExecutablePath;
                //var serviceName = new FileInfo(path).Name;
                var serviceDirectory = new FileInfo(path).Directory;
                return $@"{serviceDirectory}{db}{db}.dll";
            }
        }
    }

      主程序配置文件

      <appSettings>
        <add key="db" value="DB.MySql"/>
      </appSettings>
  • 相关阅读:
    npm使用淘宝镜像源
    MapReduce任务执行源码分析
    spark.sql.shuffle.partitions到底影响什么
    hdfs的写入数据流程及异常情况分析
    面试题
    HDFS的双缓冲机制详解
    rpm包无法卸载
    hive建表支持的文件类型与压缩格式
    centos6中同时安装python3.7与python2.6
    linux centos6.x安装mysql5.6.33版本
  • 原文地址:https://www.cnblogs.com/wskxy/p/10655957.html
Copyright © 2011-2022 走看看