[英]How is ValueType.GetType() able to determine the type of the struct?
[英]How to determine if Type is a struct?
给定一个具有Type
属性的PropertyInfo
实例,如何确定它是否为struct? 我发现有一些属性,如IsPrimitive
, IsInterface
等,但我不知道如何要求结构?
编辑:澄清问题。 假设我有一个方法:
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.