C 利用反射實現動態引導程式集簡單案例

2021-09-24 13:16:43 字數 1349 閱讀 7052

反射可以不但用來讀取元資料,還可以使用反射從編譯時還不清楚的型別中動態建立程式集,此案例摘自c#高階程式設計。

首先先建立乙個控制台應用程式,然後新增乙個類庫,類庫名稱為calculatorlib,如下圖所示:

calculatorlib程式集中有兩個方法,引數是x和y,乙個方法返回兩數之和,另乙個方法返回兩數之差,**如下圖所示:

namespace calculatorlib

}

接下來我們要在控制台車程式中例項化類calculator,並呼叫其中的方法。控制台中的**如下圖所示:

class program

public static object getcalculator()

public static void reflectionold()

);object result2 = calc.gettype().getmethod("subract").invoke(calc,new object );

console.writeline($"x + y = ");

console.writeline($"x - y = ");

console.read();}}

執行結果如下圖所示:

第二種方式是利用dynamic進行,dynamic語法會比上面第一種方法簡單,但是處理起來消耗更多的時間和資源。關於dynamic會在以後中學習。修改**如下圖所示:

class program

public static object getcalculator()

public static void reflectionnew()

");double result2 = calc.subract(x, y);

console.writeline($"x - y = ");

console.read();}}

執行結果是一樣的:

我個人認為反射是框架級的技術,由此案例為基礎可以為以後元件式開發打下根基,並極大的降低程式的耦合,棒!

利用Assembly動態引導程式集

在程式開發中,經常需要呼叫到外部的dll,所以需要反射技術,動態的引導程式集,方便呼叫.例如我們建立乙個這樣的類 namespace user public showname string name public string name set private string name public ...

c 反射中Assembly類動態引導程式集

c 反射中assembly.load及assembly.load.createinstance方法介紹 1 assembly.load 程式集 程式集名稱即dll名稱 用assembly.load 引導程式集的順序是怎樣的呢?首先它會去全域性程式集快取查詢 然後到應用程式的根目錄查詢,最後會到應用程...

利用反射方式,動態引用程式集建立類

為更好的 重用,公司做了一套winform的框架,整合資料操作 使用者許可權等功能,並進行相應的封裝.基於此框架可以任意新建應用,然後通過資料庫配置,使用框架呼叫新開發程式集中的類或窗體就可以了,基於這種想法,採用反射的實現方式.根據建構函式不同,可以使用預設的建構函式,或帶參的建構函式 可以在資料...