gpt4 book ai didi

c# - 测试属性是否可用于动态变量

转载 作者:IT王子 更新时间:2023-10-29 03:29:34 24 4
gpt4 key购买 nike

我的情况很简单。在我的代码中某处我有这个:

dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();

//How to do this?
if (myVariable.MyProperty.Exists)
//Do stuff

所以,基本上我的问题是如何检查(不抛出异常)某个属性在我的动态变量上是否可用。我可以执行 GetType() 但我宁愿避免这样做,因为我真的不需要知道对象的类型。我真正想知道的是一个属性(或方法,如果这能让生活更轻松)是否可用。有什么指点吗?

最佳答案

我认为如果不尝试访问某个dynamic 变量,就无法确定它是否具有某个成员,除非您重新实现在 C# 编译器中处理动态绑定(bind)的方式。根据 C# 规范,这可能包括很多猜测,因为它是实现定义的。

所以你实际上应该尝试访问成员并捕获异常,如果它失败了:

dynamic myVariable = GetDataThatLooksVerySimilarButNotTheSame();

try
{
var x = myVariable.MyProperty;
// do stuff with x
}
catch (RuntimeBinderException)
{
// MyProperty doesn't exist
}

关于c# - 测试属性是否可用于动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com