これはGoogleにとっては難しい質問です!メソッドの "Enum"と "enum"パラメータ
"Enum"をパラメータとする拡張メソッドがあります。
public static T GetEntry<T>(this Dictionary<Enum, string> dictionary, Enum key)
{
string val;
if (dictionary.TryGetValue(key, out val))
{
return (T)Convert.ChangeType(val, typeof(T));
}
return default(T);
}
が、私は宣言した列挙型とそれを使用しようとすると、コンパイラは、拡張メソッド
として辞書を宣言する以外、この作品を作るための方法をDictionary<CmdAttr, String> Attributes;
cmd.CommandText.Attributes.GetEntry<double>(CommandText.CmdAttr.X);
任意のアイデアを見つけることができません
Dictionary<Enum, String> Attributes
これは動作しますが、宣言された列挙型を持つ点を打ち消してしまいますか?何をしたいことはある
多くのおかげ
'辞典' '辞書<から継承していませんEnum、string> 'と互換性がありません。そのパラメータにはジェネリック型を使用する必要がありますが、C#ではenumにジェネリック制約を設定することはできないため、ここで任意の型を受け付ける可能性があります。 –
サイドノート:キーが存在する場合、なぜ2回チェックしていますか? –
@ LasseV.Karlsenあなたは 'struct'に制約を加えることができます。少し助けてくれました。 –