我为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,但我发现的所有答案都与反射和获取值类型的成员有关。我没有找到任何与堆叠类型有关的内容。