我正在寻找关于枚举和检索关联字符串值的最佳实践建议。鉴于此:
public enum Fruits {
Apple,
Orange,
Grapefruit,
Melon
}
获取名称的相关字符串值的最佳方法是什么?例如。 “Grapefruit”,因为字符串值可能与枚举中的表示不匹配。例如“Casaba Melon”
我目前的想法是接受枚举和返回字符串的函数,但这不意味着硬编码字符串值(我不想这样做)吗?是否正在使用资源文件,其中字符串可以通过枚举过于繁重的方式检索?
答案 0 :(得分:4)
要回答您的问题,您可以使用属性修饰您的枚举,以便为它们提供正确的显示字符串。以下是一些例子
这种方法的主要限制是如果您需要国际化您的应用程序,我不知道如何使属性字符串根据线程区域设置(或用于区分区域设置的任何方式)更改值。/ p>
答案 1 :(得分:1)
R0MANARMY已经提供了一个非常好的解决方案。我会提供这个替代品,不太好,但仍然。您可以更轻松地使这种文化敏感。
说你有枚举
public enum NicePeople
{
SomeGuy,
SomeOtherGuy
}
然后您可以制作像这样的扩展方法
public static class MyExtensions
{
public static string GetName(this NicePeople tst)
{
switch (tst)
{
case NicePeople.SomeGuy:
return "Some Nice guy";
case NicePeople.SomeOtherGuy:
return "Another Nice Guy";
default:
throw new Exception("Naw");
}
}
}
让你的连环杀手如此命名
NicePeople.SomeGuy.GetName()