我的情况很简单。在我的代码的某个地方,我有这个:dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();//How to do this?if (myVariable.MyProperty.Exists) //Do stuff因此,基本上我的问题是如何检查(不引发异常)动态变量上是否有某个属性可用。我可以,GetType()但是我宁愿避免这种情况,因为我真的不需要知道对象的类型。我真正想知道的只是一个属性(或方法,如果使生活更轻松)是否可用。有指针吗?
3 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
我认为dynamic除非您重新实现了在C#编译器中处理动态绑定的方式,否则就无法在不尝试访问变量的情况下找出变量是否具有某个成员。根据C#规范,这可能包括很多猜测,因为它是实现定义的。
因此,如果失败,您实际上应该尝试访问该成员并捕获异常:
dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();
try
{
var x = myVariable.MyProperty;
// do stuff with x
}
catch (RuntimeBinderException)
{
// MyProperty doesn't exist
}
- 3 回答
- 0 关注
- 308 浏览
添加回答
举报
0/150
提交
取消