Versucht, eine Flag-Enumeration zu string zu parsen

7

Ich habe eine Klasse "Lizenz", die eine Sammlung von einer Reihe von Enum-Flags wie folgt ist:

%Vor%

Der Punkt ist, dass die verschiedenen Flags derselben Kategorie zusammen ODER-verknüpft werden können, um ein Profil dessen zu bilden, was der Benutzer mit dieser Lizenz machen kann. Jetzt versuche ich, die Werte von "Usage" und "Platform" menschenfreundlich darzustellen, also zB Usage == UsageType.read | UsageType.write sollte dann geparst werden, um "lesen, schreiben" zu können.

Ich habe das erfolgreich mit einem einzelnen Enum-Typ gemacht, indem ich den Wert für jedes Flag getestet und enumitem.ToString () für jedes Flag angehängt habe, das es an einen String hat. Da ich viele dieser Enums und Werte habe, würde ich gerne einen allgemeineren Ansatz entwickeln.

Ich kam dazu (unten), aber da ich mit Vorlagenfunktionen in c # nicht sehr vertraut bin, weiß ich nicht, warum das nicht funktioniert, aber zumindest sollte es veranschaulichen, was ich meine:

%Vor%

Es heißt, dass T keine Definition für "HasFlag" enthält, aber wie könnte es jetzt sein, wenn es nicht weiß, was T ist?

    
user81993 01.10.2014, 20:15
quelle

1 Antwort

25

Sie sollten die FlagsAttribute verwenden, die das integrierte% verursacht. co_de% und ToString Methoden, so zu arbeiten, wie Sie möchten. Beachten Sie auch, dass die Konvention lautet, dass Flag-Enum-Namen Plural sein sollten , also z. Enum.Parse anstelle von UsageTypes .

%Vor%     
Tim S. 01.10.2014, 20:27
quelle

Tags und Links