反射代码。
我可以检查一下 myTypeObject == typeof(decimal)|| myTypeObject == typeof(十进制?)
有什么方法可以做到而无需重复decimal
?
我正在猜测类似的东西:
myRealTypeObject = myTypeObject.IsNullable() ? myTypeObject.GetTypeInsideNullability() : myTypeObject;
myRealTypeObject == typeof(decimal)
答案 0 :(得分:1)
我不认为重复decimal
一词是那不好。您始终可以将其提取到方法中。
但是无论如何,这是一种不涉及两个decimal
的检查方法:
Type d = typeof(decimal);
bool check = myTypeObject == d || myTypeObject == typeof(Nullable<>).MakeGenericType(d);
如果您希望将其作为扩展方法:
public static bool IsTypeOrNullable(this Type t, Type u) {
return t == u || t == typeof(Nullable<>).MakeGenericType(u);
}
// usage: myTypeObject.IsTypeOrNullabel(typeof(decimal))
答案 1 :(得分:1)
您可以使用Nullable.GetUnderlyingType
,如果输入类型不可为空,则返回null:
var myRealTypeObject = Nullable.GetUnderlyingType(myTypeObject) ?? myTypeObject;
如果您有一些要检查的对象,则可以使用is
(或as
):
bool isDecimal = boxedDecimal is decimal?;