【问题标题】:GetType of int64 returning System.Nullable返回 System.Nullable 的 int64 的 GetType
【发布时间】:2012-06-05 18:28:01
【问题描述】:

我有一个具有 type 属性的对象。当类型设置为 Int64 时,我稍后尝试提取类型信息,我得到 System.Nullable。

这是类型信息

{Name = "Nullable`1" FullName = "System.Nullable`1[[System.Int64, mscorlib, Version=2.0.0.0]]"}

如何获得 System.Int64 类型的 this?

【问题讨论】:

    标签: .net types nullable


    【解决方案1】:

    听起来您有一个给定的类型,如果它是Nullable<T>,您想要该类型或其基础类型。最好的方法是这样的:

    Nullable.GetUnderlyingType(yourObject.Type) ?? yourObject.Type;
    

    由于Nullabe.GetUnderlyingType 返回null,如果给定的Type 不是Nullable<T>,您可以使用空合并运算符 (??) 将值默认为原始类型。

    【讨论】:

      【解决方案2】:
      Type t = Nullable.GetUnderlyingType(nullableType);
      

      MSDN

      【讨论】:

        【解决方案3】:
        if ( property.PropertyType.IsGenericType 
          && property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>) )
        

        【讨论】:

          【解决方案4】:

          如果对象不为空,GetType 将返回 Int64。

          【讨论】:

            【解决方案5】:

            也许您将类型属性设置为“System.Int64”?任何地方?否则我无法重现你的行为。

            【讨论】:

            • 我也一样...奇怪的行为当然可以用我们没有的信息来解释;)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-09-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-04
            相关资源
            最近更新 更多