2016-04-22 56 views
0

我發現我可以使用GetMembers()來返回類的成員,但我只想返回枚舉成員。在調試過程中,我可以將鼠標懸停在member上,並看到一個IsEnum屬性爲true,但我似乎無法在代碼中找到它。如何確定類型成員是枚舉?

我只想在以下代碼中打印IAmAnEnum。目前代碼將同時打印IAmAnEnum以及IAmAClass

static void Main(string[] args) 
{ 
    foreach (var member in typeof(Test).GetMembers()) 
    { 
     //if (member.IsEnum) // <-- Compile error 
     //{ 
     Console.WriteLine(member.Name); 
     //} 
    } 

    Console.Read(); 
} 

public class Test 
{ 
    public enum IAmAnEnum 
    { 

    } 

    public class IAmAClass 
    { 

    } 
} 

回答

2

IsEnumType的財產。

如果該成員實際上是一個類型,則可以將其轉換成Type並獲得該屬性。

+0

謝謝!我必須等待11分鐘才能接受答案。 – Quantic

1

Type的GetMembers方法返回MemberInfo對象的數組。 在它們中的每一個上,都有一個MemberType屬性。 使用此來獲取成員的類型。 在成員的類型上,您可以自由使用IsEnum檢查。

快樂編碼! :)

+0

好吧,我明白你現在在說什麼。在這種情況下,類和枚舉都有'MemberType'成員類型.NestedType',它告訴我它是一個'Type',所以我可以*安全地*將它轉換爲帶有這些信息的'Type'。我現在使用的解決方案使用'if(member is Type){((Type)member).IsEnum ...}',但現在我看到我可以使用if(member.MemberType == MemberTypes.NestedType){ ((類型)成員).IsEnum ...}'。最後,儘管我只是錯過了我需要將它首先投入到「Type」的事實。 – Quantic