【发布时间】:2013-01-27 00:24:35
【问题描述】:
我正在使用反射来获取对象的所有属性。然后,我需要查看这些属性中的任何一个值是否是它们恰好是任何类型的默认值。以下是我当前的代码。它抱怨找不到命名空间或类型。这让我相信它与 c# 如何进行隐式类型强制有关。由于我在运行时获取类型,因此它不知道如何比较它或对此并不十分清楚。
我希望避免在输入类型的名称上进行 switch case 比较,但现在这看起来是我唯一的选择,除非 StackOverflow 上的杰出人士能够引导我朝着正确的方向前进。
private bool testPropertyAttribute(PropertyInfo prop)
{
dynamic value = prop.GetValue(DataObject, null);
Type type = prop.PropertyType;
/* Test to see if the value is the defult of its type */
return (value == default(prop.PropertyType)
}
【问题讨论】:
-
defaultonly works with generic parameters. 另外,您的代码缺少右括号和分号。 -
我假设您希望非值类型默认为 null?
-
你应该避免
dynamic,除非你没有其他好的选择。使用var或object作为value的类型在这里可以很好地工作。 -
你的意思是结束
parenthesis ) -
很好,谢谢,这是重复的,在我的研究中没有看到。从来没有想过这样做。
标签: c# reflection types type-conversion type-coercion