我使用反射来获取对象的所有属性。然后,我需要查看这些属性的值是否是它们碰巧的任何类型的默认值。以下是我目前的代码。它抱怨命名空间或类型找不到。这导致我相信它与c#如何隐式类型强制有关。由于我在运行时抓住这个类型,所以不知道如何比较它,或者不太清楚。获得一个未知类型的默认运行时
我一直希望避免一个开关案例比较类型的名称,但现在看起来像我唯一的选择,除非在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)
}
['default'只适用于泛型参数。](http://msdn.microsoft.com/en-us/library/xwth0h0d.aspx)此外,您的代码缺少右括号和分号。 – 2013-02-11 20:11:02
我假设你期望一个非值类型的默认值为null? – rene 2013-02-11 20:13:17
除非你没有其他好的选择,否则你应该避免使用“动态”。使用'var'或'object'作为'value'的类型在这里可以很好地工作。 – Bobson 2013-02-11 20:15:12