2016-04-05 12 views
0

Ich habe einige Enum-Objekte an beliebiger Stelle in meinem Projekt. Sie sind in derselben Funktion. Wie kann ich alle Enum-Objekte mit Filter finden? Ich bin nicht sicher über den Filter, aber ich denke, wir können ein Attribut für Enum-Objekt und Filtertyp basierend auf dem Attribut hinzufügen.Erhalten Sie alle ENUM-Objekte in Projekt

Zum Beispiel habe ich 2 Enum Objekte in Klasse 2:

public class FirstClass 
{ 
    [HelloWord] 
    public enum FirstEnum 
    { 
     View = 1, 
     Edit = 2 
    } 
} 

public class SecondClass 
{ 
    [HelloWord] 
    public enum SecondEnum 
    { 
     Good, 
     Bad 
    } 
} 

Also, ich will all Enum-Objekt in Projekt aufzulisten, das Attribut enthält [Hello World]. Wie kann ich das machen?

Antwort

2

Hier ist ein Linq-Ausdruck, der alle Typen, die beide enums sind, mit dem benutzerdefinierten Attribut 'HelloWorld' übergibt.

foreach(Type enumType in Assembly.GetExecutingAssembly().GetTypes() 
         .Where(x => x.IsSubclassOf(typeof(Enum)) && 
           x.GetCustomAttribute<HelloWorldAttribute>() != null)) 
{ 
    Console.WriteLine(enumType.Name); 
} 
+0

'Assembly.GetExecutingAssembly()' wahrscheinlich ist nicht die Assembly OP will. –

+0

@DannyChen OP sagte "sie sind in der gleichen Funktion" und sind in "mein Projekt", so meine beste Schätzung ist es die ausführende Baugruppe. – LodeRunner28

+0

@Danny Chen: Hast du irgendeinen Vorschlag? –

Verwandte Themen