私は次のコードを持っています:
var values1 = (EReferenceKey[])Enum.GetValues(typeof(EReferenceKey));
var valuesWithNames = values1.Select(
value => new {
Value = ((int)value).ToString("00"),
Text = Regex.Replace(value.ToString(), "([A-Z])", " $1").Trim()
});
このメソッドをジェネリックにすることができるstackoverflowで提案されたいくつかのコードは次のとおりです。
public static IEnumerable<KeyValuePair<string, string>> GetValues2<T>() where T : struct {
var t = typeof(T);
if (!t.IsEnum)
throw new ArgumentException("Not an enum type");
return Enum.GetValues(t)
.Cast<T>()
.Select(x => new KeyValuePair<string, string>(
((int)Enum.ToObject(t, x)).ToString("00"),
Regex.Replace(x.ToString(), "([A-Z])", " $1").Trim()
));
}
ほぼ同じ結果になりますが、「値」と「テキスト」という名前がありません。誰かが私に後者のコードを変更してこれらを追加し、それでも結果を順番に返す方法を提案できますか?
自分で試してみましたが、ジェネリックの選択に「Value=」と「Text=」を追加しようとするとエラーが発生しました。
エラー6名前'Value'は現在のコンテキストに存在しません