我想攔截對動態類型的調用,以避免在調用的方法或屬性不存在時發生RuntimeBinderException。 例如:攔截動態調用以避免RuntimeBinderException
class Foo {
bool IsFool{ get; set; }
}
...
dynamic d = new Foo();
bool isFool = d.IsFoo; //works fine
bool isSpecial = d.IsSpecial; //RuntimeBinderException
我想要做的就是調用時要麼創建不存在的屬性,或者只是返回null。
編輯:我想要做的項目是配置文件閱讀器。所以我希望這樣做可以避免做一個嘗試抓取或檢查是否存在配置文件的每個屬性。
謝謝你,但這種方式失敗的主要目的是爲了讓代碼更容易編寫和閱讀。 – dcidral
@dcidral,提出了兩個選擇;要麼使用'try .. catch'塊或使用反射。請參閱編輯答案。 – Rahul
@dcidral,檢查編輯的答案,如果這有所幫助。 – Rahul