反射創建對象,反射+簡單工廠+配置文件

創建一個控制檯應用程序寫反射+簡單工廠+配置文件

目錄如下

步驟一:定義接口

namespace Interface

{
    /// <summary>
    /// 數據訪問類抽象
    /// </summary>
    public interface IDBHelper
    {
        void Query();
      
    }

}

步驟二:定義SqlServerHelper類繼承IDBHelper接口

using Interface;
using System;


namespace Helper
{
    /// <summary>
    /// SqlServerHelper類
    /// </summary>
    public class SqlServerHelper : IDBHelper
    {
        //private static string ConnectionStringCustomers = ConfigurationManager.ConnectionStrings["Customers"].ConnectionString;
        public void Query()
        {
            Console.WriteLine("{0}.Query", this.GetType().Name);
        }
        public SqlServerHelper()
        {
            Console.WriteLine("{0}被構造", this.GetType().Name);
        }
    }

}

步驟三:在配置文件App.config中添加

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

        ....

 <!--配置-->
  <appSettings>
    <add key="IDBHelperConfig" value="Helper,Helper.SqlServerHelper"/>

  </appSettings>

</configuration>

步驟四:創建簡單工廠SimpleFactory

using Interface;
using System;
using System.Configuration;
using System.Reflection;
namespace Factory
{
    /// <summary>
    /// 簡單工廠
    /// </summary>
    public class SimpleFactory
    {
        /// <summary>
        /// 字符串放在配置文件App.config中
        /// </summary>
private static string IDBHelperConfig = ConfigurationManager.AppSettings["IDBHelperConfig"];//AppSettings["key"]
        private static string DllName = IDBHelperConfig.Split(',')[0];//dll
        private static string TypeName = IDBHelperConfig.Split(',')[1];//type


        public static IDBHelper CreateDBHelper()
        {
            //1.加載dll
            Assembly assembly = Assembly.Load(DllName);            
            //2.獲取類型信息
            Type type = assembly.GetType(TypeName);
            //3.創建對象
            object oHelper = Activator.CreateInstance(type);
            //4.類型轉換
            IDBHelper dBHelper = (IDBHelper)oHelper;
            //5.調用方法           
            return dBHelper;
        }
    }

}

步驟五:完成Program.cs

static void Main(string[] args)
        {
           
            try

 #region 反射+工廠+Config配置
                {
                    //IOC 可配置,可擴展
                    Console.WriteLine("************反射+工廠+Config配置************");
                    IDBHelper dBHelper = SimpleFactory.CreateDBHelper();
                    dBHelper.Query();
                }

    #endregion

 }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();

        }

大公告成!!!看看最後的效果


喜歡的可以自己去試試哦!

發佈了18 篇原創文章 · 獲贊 26 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章