顯然下面是在c#4.0無論()由GetADynamicThing返回的對象的類型的有效C#動態對象運行時類型檢查
dynamic d = GetADynamicThing();
d.Foo();
如果d的運行時類型不包含方法foo (),拋出一個RunTimeBinderException。
會不會有一個容易確定Foo()是否存在於d?
否則,我們被卡在舊物反射對象上,或依靠try-catch。不知道我喜歡這兩種方法。
更新:因此,我們目前有3個選項:
- 反思
- catch異常
- 希望GetADynamicThing()返回你希望它返回什麼
數3似乎是在COM situations is great的動態的目標用法。我最初問這個問題的原因是迴應做something like this,即使用一些任意創建的對象的方法。這非常類似於使用動態的錯誤情況。
編譯器是否會記住這一點。編譯器仍然知道d是什麼類型。 – chollida 2009-08-27 18:28:04
@chollida:不,它沒有。在編譯時,它知道類型是動態的。它不知道這是什麼意思,在實際類型方面,這是有點點。 – 2009-08-27 18:29:04
@Chollida,看他掛[動態,如何測試屬性是否可用(HTTP的 – Fredou 2009-08-27 18:29:58