色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

三種屬性操作性能比較:PropertyInfo + Expression Tree + Delegate.CreateDelegate

  在《上篇》中,我比較了三種屬性操作的性能:直接操作,單純通過PropertyInfo反射和IL Emit。本篇繼續(xù)討論這個話題,我們再引入另外兩種額外的屬性操作方式:Expression Tree(這和IL Emit基本一致)和通過Delegate的靜態(tài)方法CreateDelegate創(chuàng)建相應的委托進行屬性的賦值和取值。[源代碼從這里下載]

目錄
一、定義測試相關的接口、類型和委托
二、通過Expression Tree的方式創(chuàng)建用于屬性操作的委托
三、編寫屬性賦值操作測試方法
四、編寫屬性取值操作測試方法
五、執(zhí)行測試程序,查看測試結果
六、如果在Expression Tree中避免類型轉(zhuǎn)換呢?

  一、定義測試相關的接口、類型和委托

  我首先定義了一個Bar類型和IFoo接口,該接口中僅僅包含一個類型和名稱為Bar的可讀寫屬性。Foo1、Foo2和Foo3均實現(xiàn)接口IFoo,這些接口和類型定義如下:

public class Bar{ }
public interface IFoo
{
Bar Bar {
get; set; }
}
public class Foo1 : IFoo
{
public Bar Bar { get; set; }
}
public class Foo2 : IFoo
{
public Bar Bar { get; set; }
}
public class Foo3 : IFoo
{
public Bar Bar { get; set; }
}

NET技術三種屬性操作性能比較:PropertyInfo + Expression Tree + Delegate.CreateDelegate,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 鄢陵县| 宣恩县| 马关县| 静安区| 郴州市| 临桂县| 丰顺县| 德钦县| 澄城县| 习水县| 汕头市| 偃师市| 互助| 青岛市| 嵩明县| 大渡口区| 杭锦旗| 巴马| 宜兰市| 永城市| 保靖县| 东台市| 张家港市| 嵊州市| 临朐县| 专栏| 康马县| 扎囊县| 巧家县| 三门县| 乌海市| 山丹县| 义乌市| 肃北| 南川市| 互助| 唐山市| 内江市| 长治县| 桂平市| 女性|