2010-12-02 5 views
0

Ich habe drei verschiedene Enum und alle drei hat die gleiche Kennung, aber unterschiedliche Werte. Ich möchte basierend auf einer bestimmten Bedingung auf bestimmte enum zugreifen.generische Funktion zum Enumerationswert

zum Beispiel:

Public Enum Type1 
    Font = 10 
    Color = 11 
End Enum 

Public Enum Type2 
    Font = 20 
    Color = 21 
End Enum 

Public Enum Type3 
    Font = 30 
    Color = 31 
End Enum 

Und basierend auf bestimmten Bedingungen muss ich insbesondere Enum zuzugreifen. Beispiel:

if(somecondition = 1) 
    return Type1.Font 
else if (somecondition = 2) 
    return Type2.Font 
else if (somecondition = 3) 
    return Type3.Font 

Ich muss die gleiche Logik wiederholen, um auf eine andere Enum-ID zuzugreifen. Gibt es eine Möglichkeit, eine generische Methode zu schreiben, die mir einen Enum-Wert zurückgibt?

zum Beispiel

public function GetEnumValue(enumtype, identifier) as integer 

    return enumtype.identifier 

end function 

Gibt es eine Möglichkeit über generische Funktion zu schreiben Enum-Wert zurück?

Aktualisiert: Ich suche nach Verfahren wie GetEnumValue (Typ1, Font), die in ganzzahligen Enum-Wert zurückgibt (in diesem Fall 10 für type1.font)

+0

Ihre Frage gelöst werden, ist _extremely_ unklar. – SLaks

Antwort

1

Ihre Frage ist extrem unklar.

Sie können für

return Enum.Parse(enumType, valueName); 

suchen Wo enumType ein Objekt Type und valueName ist eine Zeichenfolge.

+0

ich denke, das ist was ich brauche. Ich finde "GetValue" -Methode nicht unter Enum. Ist dieser Enum-Bezeichner ein zweiter Parameter in dieser Methode? – shailesh

+0

@Shailesh: Sorry, 'Enum.Parse'. – SLaks

+0

Danke SLaks. Hier verwende ich Convert.ToInt32 (System.Enum.Parse (GetType (Type1), "Font")) – shailesh

3

IMO du missbrauchst enums. Sie sollten mit einem Schalter

  • drei Wörterbücher von Ihrem Enum

    • drei Funktionen einen enum und entweder in int
    • jeden Eintrag mit Attributen für die gewünschten Werte im Enum dekorieren.

    Ihr unmittelbares Problem kann mit Enum.Parse

  • Verwandte Themen