繁体   English   中英

如何确定Type是否为struct?

[英]How to determine if Type is a struct?

给定一个具有Type属性的PropertyInfo实例,如何确定它是否为struct? 我发现有一些属性,如IsPrimitiveIsInterface等,但我不知道如何要求结构?

编辑:澄清问题。 假设我有一个方法:

public Boolean Check(PropertyInfo pi)
{
   return pi.Type.IsStruct;
}

我怎么写而不是IsStruct

Type.IsValueType应该可以解决问题。

(从这里捏)

结构和枚举( IsEnum )属于称为值类型( IsValueType )的超集。 基元类型( IsPrimitive )是结构的子集。 这意味着所有原始类型都是结构,但反之亦然; 例如, int是基本类型以及结构,但decimal只是结构,而不是基本类型。

所以你看到唯一缺少的属性就是结构。 容易写一个:

public bool IsStruct(this Type type)
{
   return type.IsValueType && !type.IsEnum;
}

把评论Antony Koch的答案放到一个扩展方法中:

public static class ReflectionExtensions {
        public static bool IsCustomValueType(this Type type) {            
               return type.IsValueType && !type.IsPrimitive && type.Namespace != null && !type.Namespace.StartsWith("System.");
        }
    }

应该管用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM