以编程方式检查对象参数是否为C#中的默认值(object.GetType())

时间:2015-06-24 16:51:59

标签: c#

我为WPF写了ObjectHasValueConverter : IValueConverter

相关功能为Convert(object value, ...)。我基本上想要做

return value != default(value.GetType())

不幸的是,似乎default是一个编译时关键字而IValueConverter没有通用的等价物,所以我不能default(T)。< / p>

显然,如果value是类或数组的实例,我可以检查null。

if (value.GetType().IsValueType | value.GetType().IsArray)
{
    return value != null;
}

我有string的特殊情况,返回!string.IsNullOrWhitespace(value)。对于结构和其他原语,我希望有比

更清洁的东西
if (value is int | value is short | value is long | ...)
{
    return (int)value != 0;
}

if (value is float | value is double)
{
    return (double)value != 0;
}

if (value is bool)
{
    return !(bool)value;
}
...

我在写这篇文章之前已经搜过了SO,但我发现的所有答案都与反射和获取值类型的成员有关。我没有找到任何与堆叠类型有关的内容。

0 个答案:

没有答案