2011-08-14 11 views
2

以下のコードでは、文字列(例: "medium")をEnum値に変換しています。私が行うことができる必要があるのは、不透明度を固定のEnum型として持つことではなく、Enum型で関数が動作するように引数として渡します。これは私が予想していたより難しいと証明されています。つまり、 'Enum MyEnum'は機能しません。誰にも解決策?Enumを引数として渡すにはどうすればよいですか?

public enum Opacity 
{ 
    Low, 
    Medium, 
    High 
} 

public static Enum StringToEnum(String str) 
{    
    return (Opacity)Enum.Parse(typeof(Opacity), str, true); // Case insensitive    
} 
+0

YetAnotherUserは、あなたが尋ねた質問に対する正しい答えを提供しますが、 'Enum.Parse'を包むのポイントは何ですか? 'StringToEnum'メソッドは新しい値を追加せず、呼び出すメソッドの名前だけを変更します。 – Mike

+0

@あなたのところにはちょうど名前の変更です - 複数のバリデーションを追加するためにこれを強化することはできますが、_string names_を属性に定義することをサポートし、単に 'SomeArbidObject.StringRepresentingOpacity.StringToEnum 'などなど。本質的に、あなたが望むなら、もっと便利にすることができます。 – YetAnotherUser

答えて

9
public static T StringToEnum<T>(String str) where T : struct 
{ 
    return (T)Enum.Parse(typeof(T), str, true); 
} 
関連する問題