我的情況很簡單。在我的代碼的某個地方,我有這個:dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();//How to do this?if (myVariable.MyProperty.Exists) //Do stuff因此,基本上我的問題是如何檢查(不引發異常)動態變量上是否有某個屬性可用。我可以,GetType()但是我寧愿避免這種情況,因為我真的不需要知道對象的類型。我真正想知道的只是一個屬性(或方法,如果使生活更輕松)是否可用。有指針嗎?
3 回答

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
我認為dynamic除非您重新實現了在C#編譯器中處理動態綁定的方式,否則就無法在不嘗試訪問變量的情況下找出變量是否具有某個成員。根據C#規范,這可能包括很多猜測,因為它是實現定義的。
因此,如果失敗,您實際上應該嘗試訪問該成員并捕獲異常:
dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();
try
{
var x = myVariable.MyProperty;
// do stuff with x
}
catch (RuntimeBinderException)
{
// MyProperty doesn't exist
}
- 3 回答
- 0 關注
- 329 瀏覽
添加回答
舉報
0/150
提交
取消