测试动态变量上的属性是否可用

我的情况很简单。在我的代码的某个地方,我有这个:


dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();


//How to do this?

if (myVariable.MyProperty.Exists)   

//Do stuff

因此,基本上我的问题是如何检查(不引发异常)动态变量上是否有某个属性可用。我可以,GetType()但是我宁愿避免这种情况,因为我真的不需要知道对象的类型。我真正想知道的只是一个属性(或方法,如果使生活更轻松)是否可用。有指针吗?


HUWWW
浏览 297回答 3
3回答

qq_遁去的一_1

我认为dynamic除非您重新实现了在C#编译器中处理动态绑定的方式,否则就无法在不尝试访问变量的情况下找出变量是否具有某个成员。根据C#规范,这可能包括很多猜测,因为它是实现定义的。因此,如果失败,您实际上应该尝试访问该成员并捕获异常:dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();try{    var x = myVariable.MyProperty;    // do stuff with x}catch (RuntimeBinderException){    //  MyProperty doesn't exist} 
打开App,查看更多内容
随时随地看视频慕课网APP