2009-06-18 10 views
0

Ich versuche, eine Aufzählung einzurichten, die bestimmte projektspezifische Werte der standardmäßigen System.Drawing.Color-Enumeration zuordnet.Gibt es eine Möglichkeit, eine Aufzählung einer anderen Enumeration in C# .NET 3.5 zuzuordnen?

Hier ist die Idee von dem, was ich tun möchte:

public enum SessionColors 
{ 
    Highlights = Color.HotPink, 
    Overlays = Color.LightBlue, 
    Redaction = Color.Black 
} 

Das Ziel ist es, so zu haben ich SessionColors.Highlights für Dinge verwenden kann ich als Highlight identifizieren und doch ich das ändern kann Enumerationszuordnung später und Auswirkungen auf alle nachfolgenden Farben.

Ich weiß, ich kann die Werte von Color.HotPink, etc .. und nur diese verwenden, aber es ist nicht so klar. Gibt es eine bessere Idee?

Antwort

7

Just do it mit öffentlichen Konstanten:

public static class SessionColors 
{ 
    public static readonly Color Highlights = Color.HotPink; 
    public static readonly Color Overlays = Color.LightBlue; 
    public static readonly Color Redaction = Color.Black; 
} 
+4

Nur um dies zu verbessern, anstatt meine Antwort zu posten, * können Sie Enum-Werte in Ihrer eigenen enum den Werten in einer anderen enum zuordnen. Mit was Sie hier zu tun haben, wie Hans sagt, ist kein Enum-Wert, es ist eine Farbe (die eine Struktur ist). –

+0

Ich habe einfach angenommen, dass Color ein Enum war, habe es nicht wirklich überprüft. Diese Lösung funktioniert super, danke! –

+1

Ich kann den Vorteil der Verwendung statischer schreibgeschützter Felder anstelle von Konstanten für dieses Problem nicht sehen. –

3

Colors.HotPink ist kein ENUM-Wert, es ist eine statische Eigenschaft der statischen Klasse Farben, die einen Farbwert zurückgibt. Und dieser Farbwert ist eine Struktur, keine Ganzzahl.

Sie können also keine Farbe als Basiswert einer Enumeration verwenden, da diese auf die Integraltypen beschränkt ist.

2

Ich würde es persönlich mit Color-Eigenschaften in einer statischen Klasse anstelle von Aufzählungen tun. Dies hat viele Vorteile, aber möglicherweise wäre es am nützlichsten, wenn Sie damit die Farben aus der app.config (oder einer anderen Konfigurationsquelle) zur Laufzeit laden könnten, ohne eine Neukompilierung zu erzwingen.

Verwandte Themen