Enum を辞書リストに変換する関数を作成しようとしています。Enum 名も、より人間が読める形式に変換されます。関数を呼び出して列挙型を指定し、辞書を取得したいだけです。列挙型を正しい型にキャストする方法がわかりません。(「returnList.Add」行でエラーが発生します)。現在、タイプに var を使用しているだけですが、渡されたので、タイプを知っています。
internal static Dictionary<int,string> GetEnumList(Type e)
{
List<string> exclusionList =
new List<string> {"exclude"};
Dictionary<int,string> returnList = new Dictionary<int, string>();
foreach (var en in Enum.GetValues(e))
{
// split if necessary
string[] textArray = en.ToString().Split('_');
for (int i=0; i< textArray.Length; i++)
{
// if not in the exclusion list
if (!exclusionList
.Any(x => x.Equals(textArray[i],
StringComparison.OrdinalIgnoreCase)))
{
textArray[i] = Thread.CurrentThread.CurrentCulture.TextInfo
.ToTitleCase(textArray[i].ToLower());
}
}
returnList.Add((int)en, String.Join(" ", textArray));
}
return returnList;
}