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>
  • 相关阅读:
    上传图片,语音,和富文本(webuploader,dropzone, froala)
    java代码备份mysql数据库
    maven 父子工程打包 并且上传linux服务器
    docker+fastdfs+nginx 实现分布式大文件存储系统以及视频缓存播放
    docker eureka 注册中心 服务提供者通信机制
    lvs dr 模型配置详解
    spring cloud 详解
    JS前端创建CSV或Excel文件并浏览器导出下载
    修改ElementUI源码实践
    Leaflet+heatmap实现离线地图加载和热力图应用
  • 原文地址:https://www.cnblogs.com/wskxy/p/10655957.html
Copyright © 2011-2022 走看看