代码之家  ›  专栏  ›  技术社区  ›  JoelHess

返回System.Nullable的Int64的GetType

  •  5
  • JoelHess  · 技术社区  · 17 年前

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

    这是类型信息

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

    我怎样才能找到System.Int64类型的这个?

    5 回复  |  直到 14 年前
        1
  •  6
  •   Andrew Hare    14 年前

    听起来您有一个给定的类型,您希望该类型或它的基础类型(如果是的话)。 Nullable<T> . 最好的方法是这样:

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

    自从 Nullabe.GetUnderlyingType 收益率 null 如果给定 Type 不是 可以为空<t> 可以使用空合并运算符(??)将值默认为原始类型。

        2
  •  1
  •   jason    17 年前
    Type t = Nullable.GetUnderlyingType(nullableType);
    

    MSDN .

        3
  •  1
  •   Peter Lang    14 年前
    if ( property.PropertyType.IsGenericType 
      && property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>) )
    
        4
  •  0
  •   Jimbo    17 年前

    如果对象不为空,gettype将返回int64。

        5
  •  0
  •   tanascius    17 年前

    也许您将类型属性设置为“System.Int64”?哪里?否则我就无法复制你的行为。