列挙型を受け取り、各 int が列挙型の名前 (文字列として) に関連付けられている Dictionary に変換するメソッドを作成しました
// Define like this
public static Dictionary<int, string> getDictionaryFromEnum<T>()
{
List<T> commandList = Enum.GetValues(typeof(T)).Cast<T>().ToList();
Dictionary<int, string> finalList = new Dictionary<int, string>();
foreach (T command in commandList)
{
finalList.Add((int)(object)command, command.ToString());
}
return finalList;
}
(ps。はい、私はダブルキャストを持っていますが、アプリケーションは非常に安価で汚いC#列挙型からJavascript列挙型へのコンバーターになることを意図しています)。
こんな感じで簡単に使えます
private enum _myEnum1 { one = 1001, two = 1002 };
private enum _myEnum2 { one = 2001, two = 2002 };
// ...
var a = getDictionaryFromEnum<_myEnum1>();
var b = getDictionaryFromEnum<_myEnum2>();
ここで、呼び出しを繰り返す一連の呼び出しに使用する列挙型のリストを作成できるかどうか疑問に思っていました。
これは元の質問にありました: [Why can't I call this?]
このような通話を作成するにはどうすればよいですか?
List<Type> enumsToConvertList = new List<Type>();
enumsToConvertList.Add(typeof(_myEnum1));
enumsToConvertList.Add(typeof(_myEnum2));
// this'll be a loop
var a = getDictionaryFromEnum<enumsToConvertList.ElementAt(0)>();