[英]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.