c# 反射技術雜談。,

來源:互聯網
上載者:User
概念

反射 能夠查看中繼資料的類型,等資訊的一種能力。

中繼資料 編譯以後最基本的資料單元。本質上就上一大追表。當程式編譯之後就能形成很多表,比如類定義表,欄位定義表,方法定義表。

反射技術 就是使用REFLACSIOIN命名空間下的工具允許你解析這些中繼資料代表的代碼.

PE檔案 被稱為可移植的執行體是PortableExecute的全稱,常見的EXE、DLL、OCX、SYS、COM都是PE檔案,PE檔案是微軟Windows作業系統上的程式檔案(可能是間接被執行,如DLL).在.net程式中pe檔案包含兩部分,一部分是中繼資料資訊,另外一部分是msIL資訊(msil以及標記中繼資料資訊的部分。)

使用的命名空間

System.refloction

System.Type

作用

反射的主要作用是用來擴充系統和動態調用程式集 :

擴充系統

      所謂擴充系統就是先把系統寫好,系統裡面定義介面,後面開發的人去寫介面的代碼。此時該系統就要用反射了,系統用反射調用介面,當介面沒寫,系統利用反射就不會出錯,此時就等於沒實現此功能而已,當介面被人寫好了,系統就會自動調用介面的功能展現在系統上。反射實現隨插即用功能。

動態調用程式集

動態調用程式集就是利用反射去調用編譯好的dll,當然此時的dll沒有被引用到你所建的工程裡面。當你編譯你的工程時,不會編譯你調用的dll,當你運行到調用dll時,此時才會去調用dll,判斷是否有文法語義,等編譯,啟動並執行錯誤。這樣利用反射具有一定靈活性,就是不用從你的工程調用dll,還有就是dll可隨時改變(當然介面還是要對應),不需改變你所建的工程。

範例程式碼
    class Program    {        static void Main(string[] args)        {            Console.WriteLine("測試程反射技術。。。");                       Assembly ass;            Type type;            object obj;                       //1 載入程式集            ass = Assembly.LoadFile(@"D:\MYProject\Thread_sTU\DLL_reflection\bin\Debug\DLL_reflection.dll");            //2 根據程式集資訊擷取程式集的類型資訊. 注意這個方法就是擷取中繼資料中的定義的各種類型(類,方法,屬性等)資訊。            type = ass.GetType("DLL_reflection.Class1");            //3 根據類型資訊擷取方法對象            MethodInfo method = type.GetMethod("text");             //4 處理方法對象的參數對象。            object[] paramobj = new object[0] ;            //5 建立程式集執行個體            obj = ass.CreateInstance("DLL_reflection.Class1");             //6 根據方法對象,以及執行個體對象,方法出參數對象 調用此函數。            method.Invoke(obj, paramobj);             Console.WriteLine("測試程反射技術 END ");            Console.ReadLine();        }    }}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.