假设“代码”应该只是整数的字符串表示,听起来你想要这样的东西:
// Type and property names changed for sanity
var pairs = Enum.GetValues(typeof(Translation))
.Cast<Translation>()
.Select(t => new KeyValuePair {
Code = ((int) t).ToString(),
Text = t.ToString()
});
请注意,使用枚举值名称作为其文本表示非常有限 - 您只能使用有效的 C# 标识符。从长远来看,您可能会发现使用属性来描述文本是有益的,至少作为替代:
public enum Translation {
...
[Description("Traditional Chinese")]
TraditionalChinese
}
属性还允许您添加其他数据 - 例如,如果您不希望代码只是整数表示,则可以将其放入枚举中。您需要通过反射来获取属性。我支持DescriptionAttribute
在Unconstrained Melody中,这使得各种枚举任务更简单,但其他属性需要更多的工作。
同样,另一种选择是使用集合初始化程序直接在代码中构建字典或集合。老实说,你所追求的还不够清楚。希望其中一些有所帮助。