我使用Fieldinfo.FieldType.FullName来获取字段数据类型。 对于一个字符串我得到System.String 但是对于一个Double我得到了
System.Nullable`1 [[System.Double,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]
类似于DateTime我得到的 System.Nullable`1 [[System.DateTime,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]
如果此特定字段是日期时间,我需要检查我的代码然后执行某些操作。 我怎样才能检查该字段是双字符串还是字符串或双字符等
提前致谢
答案 0 :(得分:4)
JaredPar的回答是一个很好的解释。要获得解决方案,请尝试:
Type fieldType = fieldInfo.FieldType;
if (fieldType.IsGenericType && fieldType.GetGenericTypeDefinition() == typeof(Nullable<>))
fieldType = fieldType.GetGenericArguments()[0];
现在你可以说:
if (fieldType == typeof(double))
...
等。这段代码基本上会“撤销”可空类型语义。
答案 1 :(得分:1)
此处的问题是相关字段实际上是double?
和DateTime?
,而不是普通的double
/ DateTime
。跟踪类型名称的?
是全名Nullable<double>
的简写,与double
不同。
听起来你真的想要使用这个领域。有几种方法可以解决这个问题
double
而不是double?
double
或double?
,请执行操作。