c#中,利用反射機制的兩個樣本

來源:互聯網
上載者:User

本文轉自:http://renhappy20066.blog.163.com/blog/static/1120807862010220104129204/

 

樣本一.

利用反射機制擷取當前的程式集

首先,引入命名空間using System.Reflection;
在測試類別中進行測試,範例程式碼如下:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //得到當前程式集
            Assembly assembly = Assembly.GetExecutingAssembly();
            //Console.WriteLine(assembly.GetName().ToString());
            //獲得所有的類資訊
            foreach (MemberInfo info in assembly.GetTypes())
            {
                Console.WriteLine(info.ToString());
                Console.ReadKey();
            }

        }
    }
}

樣本二.

利用反射機制動態載入不同類型的資料庫

分別以SQL Server和Oracle為例
首先,引入兩個命名空間,using System.Reflection;和using System.Configuration;(設定檔的命名空間


其次,建立User.cs
    範例程式碼:
      
    public class User
    {
        int _id;

        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }
        string _name;

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
    }
    建立SQL Server的實作類別(只是類比實現,資料庫連接並無真正實現,主要是用來示範反射機制的)
    SqlService.cs

    範例程式碼:
    public class SqlService
    {
        public static int InserUser(User user)
        {
            return 1;
        }
    }
 
    建立Oracle的實作類別
    Oracle.cs

    範例程式碼:
    class OracleService
    {
        public static int InserUser(User user)
        {
            return 0;
        }
    }

    建立資料庫選擇類(用來實現動態選擇資料庫):
    ChooseDB.cs

    範例程式碼:
    class ChooseDB
    {
        public static int ChooseService()
        {
            int result = 0;
            string type =
                ConfigurationManager.AppSettings["type"];
            User user=new User();
            switch (type)
            {
                case "Sql":
                    result= SqlService.InserUser(user);
                    break;
                case"Oracle":
                    result=AccessService.InserUser(user);
                    break;
            }
            return result;
        }
    }

接著,配置App.config檔案
範例程式碼:
App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="type" value="Oracle"/>
  </appSettings>
</configuration>

最後,在主程式中進行測試,
範例程式碼:
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(ChooseDB.ChooseService().ToString());
            Console.ReadKey();
        }
    }  

此樣本主要是為了示範c#中的反射機制,只需修改App.config檔案中的value的值,而在選擇資料庫類之中,將

鍵(key)傳給該類,即可動態為應用程式選擇不同的資料庫。
 
此樣本在實際開發中應用比較多,所以應該進行深入的學習。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.