簡體   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