本人**:
與反射的比較
首先能看到的是,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 programwatch.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的配置檔案,如下 ...