C 4 0跨程式集使用 dynamic

2021-12-29 20:59:41 字數 566 閱讀 4103

今天寫**時偷懶用了dynamic,結果遇到問題,執行時始終無法獲取dynamic物件的屬性。原問題簡化後如下:

程式集a包含sampleclass類,有乙個靜態方法,接收乙個dynamic型別引數並將其value屬性輸出。

public class sampleclass

}程式集b引用程式集a並呼叫output方法:

sampleclass.output (new );執行結果是:

"unhandled exception: microsoft.csharp.runtimebinder.runtimebinderexception: object does not contain a definition for value"

而且在除錯時,是可以看到result的value屬性值的:

用反射也可以看到確實有value這個屬性,但這裡就是無法輸出,原因是什麼?

答:因為匿名型別預設是private的,所以在b程式集中定義的匿名型別,a程式集是無法直接獲取其成員資訊的,因而無法輸出。解決方法是預先定義public的資料型別。所以匿名型別的使用還是有很多限制的,類似的問題也出現在匿名方法上。

C 使用反射載入多個程式集

當開發外掛程式的時候需要用到反射,在客戶端動態載入遍歷程式集,並呼叫每個程式集的方法。建立乙個控制台應用程式,首先設計乙個介面 public inte ce isay 在控制台應用程式下建立plugins資料夾,控制台的可執行檔案和所有程式集檔案都生成在這裡。右鍵控制台專案 屬性 生成 把 輸出路徑...

C 使用反射獲取程式集的成員

using system using system.collections.generic using system.linq using system.text using system.threading.tasks using system.reflection namespace b002 ...

C 在使用Assembly引導程式集時失敗

錯誤現象 進行外掛程式讀取時出現錯誤 嘗試從乙個網路位置引導程式集,在早期版本的 net framework 中,這會導致對該程式集進行沙盒處理。此發行版的 net framework 預設情況下不啟用 cas 策略,因此,此載入可能會很危險。如果此載入不是要對程式集進行沙盒處理,請啟用 loadf...