【问题标题】:Fieldinfo.FieldType.FullName is not giving datatype for datetime and doubleFieldinfo.FieldType.FullName 没有给出 datetime 和 double 的数据类型
【发布时间】:2011-04-07 21:11:41
【问题描述】:

我正在使用 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]]

如果此特定字段是日期时间,我需要检查我的代码,然后执行某些操作。 我如何检查该字段是双精度、字符串还是双精度等

提前致谢

【问题讨论】:

    标签: c# reflection visual-studio-2005


    【解决方案1】:

    JaredPar 的回答是一个很好的解释。如需解决方案,请尝试:

    Type fieldType = fieldInfo.FieldType;
    if (fieldType.IsGenericType && fieldType.GetGenericTypeDefinition() == typeof(Nullable<>))
        fieldType = fieldType.GetGenericArguments()[0];
    

    现在你可以说:

    if (fieldType == typeof(double))
        ...
    

    等等。此代码将基本上“撤消”可空类型语义。

    【讨论】:

      【解决方案2】:

      这里的问题是有问题的字段实际上是 double?DateTime? 而不是普通的旧 double / DateTime。类型名称后面的? 是全名Nullable&lt;double&gt; 的简写,与double 不同。

      听起来你确实想使用这个字段。有几种方法可以解决这个问题

      • 使字段类型实际为double 而不是double?
      • 如果类型是doubledouble?,则执行该操作。

      【讨论】:

      • 我正在从 salesforce 获取这些数据。我真的不确定数据类型是双精度还是双精度?我的问题是我将如何检查它是哪种数据类型。我正在使用 FieldInfo 类检查数据类型。字段信息.字段类型.全名。这将返回版本文化等以及 Syatem.DateTime。正如我的问题中提到的。如何在 If 语句中确认类型是 double 或 string 或 datetime
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 2020-05-26
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      相关资源
      最近更新 更多