使用dynamic來簡化反射實現

2022-08-29 03:51:09 字數 778 閱讀 7229

dynamic是framework4.0的新特性,dynamic的出現讓c#具有了弱語言型別的特性,編譯器在編譯的時候,不再對型別進行檢查,不會報錯,但是執行時如果執行的是不存在的屬性或者方法,執行程式還是會丟擲runtimebinderexception異常。

var 與 dynamic 的區別

var是編譯器給我們的語法糖,編譯期會匹配出實際型別並且替換該變數的宣告。

dynamic 被編譯後,實際是乙個object型別,只不過編譯器對dynamic做特殊處理,將型別檢查放到了執行期。

這從vs的編譯器視窗可以看出來,var 宣告的變數在vs中有智慧型提示,因為vs能推斷出來實際型別;dynamic宣告的變數沒有智慧型提示。

利用dynamic 簡化反射www.yztrans.com

public class dynamicsample

public int add(int a, int b)

}public partial class dynamicpage : system.web.ui.page

);//dynamic的做法,簡潔,推薦

dynamic dynamicsample2 = new dynamicsample();

int res2 = dynamicsample2.add(1, 2); //add不會智慧型提示出來}}

使用dynamic還有乙個優點就是,比沒有優化過的反射效能好,跟優化過的反射效能相當www.lefeng123.com

使用dynamic來簡化反射實現,並且提高了效能。

本人 與反射的比較 首先能看到的是,dynamic與反射相比,執行相同操作所需的 少的多。如呼叫類me中的getname 方法。class me public string getname 用反射呼叫getname 方法 assembly a assembly.getexecutingassembl...

建議15 使用dynamic來簡化反射實現

建議15 使用dynamic來簡化反射實現 dynamic是framework 4.0的新特性。dynamic的出現讓c 具有了弱語言型別的特性。編譯器在編譯的時候不再對型別進行檢查,編譯器預設dynamic物件支援開發者想要的任何特性。比如,即使你對getdynamicobject方法返回的物件一...

使用spring aop 簡化mock設計實現

有時候為了去掉對外部系統的依賴,我們需要針對外部依賴的介面建立乙個mock實現類,當然裡面都是空實現,如果有多個的話,可能需要寫很多的mock實現類,我們在測試的時候,發現可以通過spring aop來進行簡化,使用乙個aspect來替代多個mock實現.具體做法如下 首先是aop的配置檔案,如下 ...