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

2022-01-12 19:38:44 字數 1297 閱讀 7845

本人**:

與反射的比較

首先能看到的是,dynamic與反射相比,執行相同操作所需的**少的多。

如呼叫類me中的getname()方法。

class

me public

string

getname() }

用反射呼叫getname()方法:

assembly a

=assembly.getexecutingassembly();

object

instance

=a.createinstance(

"xianfen.net.testdynamic.me");

type type

=instance.gettype();

methodinfo mi

=type.getmethod(

"getname");

object

result

=mi.invoke(instance,

null

);同樣的dynamic呼叫:

dynamic myinfo

=new

me();

string

result

=myinfo.getname();

下面先舉乙個不用dynamic來實現反射的例子

class program);}

watch.stop();

console.writeline(watch.elapsedmilliseconds);//

200毫秒左右

console.read();}}

public

class dynamicsample

public

int add(int a, int b)

}

試過幾次,耗時基本在200毫秒左右,然後我們用dynamic來實現反射,看看效能如何

class program

watch.stop();

console.writeline(watch.elapsedmilliseconds);//

50毫秒左右

console.read();}}

public

class dynamicsample

public

int add(int a, int b)

}

不僅**變少了, 而且效能也提高了乙個數量級,所有,大家能用動態屬性實現反射的情況下建議都用動態屬性來試下!

使用dynamic來簡化反射實現

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

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

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

使用spring aop 簡化mock設計實現

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