2010-12-02 18 views
0

私は3つの異なるEnumを持ち、3つはすべて同じ識別子ですが異なる値を持ちます。私はいくつかの条件に基づいて特定の列挙型にアクセスしたい。例えばenum値を返す総称関数

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 

と私は特定の列挙型にアクセスする必要がある特定の条件に基づいて。例えば、

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

は、私は他の列挙型識別子にアクセスするために同じロジックを繰り返す必要があります。私は列挙型の値を返すジェネリックメソッドを書くことができる方法はありますか?

例えば、

public function GetEnumValue(enumtype, identifier) as integer 

    return enumtype.identifier 

end function 

は、列挙型の値を返すために、一般的な機能の上に書き込みする方法はありますか?

更新:を私は(type1.fontのために、このケース10内)の整数で列挙値を返しますGetEnumValue(タイプ1、フォント)のような方法を探しています

+0

ご質問が不明確_extremely_されるとあなたの当面の問題を解決することができます。 – SLaks

答えて

1

あなたの質問は極めて不明です。

あなたはenumTypeTypeオブジェクトであり、valueNameが文字列である

return Enum.Parse(enumType, valueName); 

を探していてもよいです。

+0

私はそれが私が必要とするものだと思います。 Enumの下で "GetValue"メソッドが見つかりません。そのメソッドの2番目のパラメータとしてその列挙型識別子ですか? – shailesh

+0

@Shailesh:申し訳ありませんが、 'Enum.Parse'。 – SLaks

+0

SLAKsありがとうございます。ここで私はConvert.ToInt32(System.Enum.Parse(GetType(Type1)、 "Font"))を使用しています。 – shailesh

3

IMOあなたは列挙型を誤って使用しています。あなたの列挙型から

  • 3の辞書が
  • が所望の値の属性を持つ列挙型の各エントリを飾るintにスイッチを1 enumいずれか

    • 3つの機能を持っている必要があります。

    Enum.Parse