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>
  • 相关阅读:
    全局临时表的应用 Timothy
    结合windows服务的Socket聊天室 Timothy
    阿拉伯数字转换成金额大写金额(包括小数) Timothy
    回文字符串和栈 Timothy
    SQL 读取不连续的第30到40之间的数据 Timothy
    C#中as和is关键字 Timothy
    嵌套事务和事务保存点的错误处理 Timothy
    隐式事务 Timothy
    float,double和decimal类型 Timothy
    string 值类型还是引用类型 Timothy
  • 原文地址:https://www.cnblogs.com/wskxy/p/10655957.html
Copyright © 2011-2022 走看看