<分区>
我有一个像这样的枚举
Enum Complexity
{
NotSoComplex,
LittleComplex,
Complex,
VeryComplex
}
我想在下拉列表中使用它,但不想在列表中看到这样的 Camel 名称(对用户来说看起来很奇怪)。相反,我想用正常的措辞,比如 没那么复杂 小复杂(等)
另外,我的应用程序是多语言的,我希望能够显示这些本地化的字符串,我使用了一个助手 TranslationHelper(string strID),它为我提供了字符串 ID 的本地化版本。
我有一个可行的解决方案,但不是很优雅: 我为枚举创建了一个辅助类,其中一个成员 Complexity 和 ToString() 被覆盖,如下所示(代码简化)
public class ComplexityHelper
{
public ComplexityHelper(Complexity c, string desc)
{ m_complex = c; m_desc=desc; }
public Complexity Complexity { get { ... } set {...} }
public override ToString() { return m_desc; }
//Then a static field like this
private static List<Complexity> m_cxList = null;
// and method that returns the status lists to bind to DataSource of lists
public static List<ComplexityHelper> GetComplexities()
{
if (m_cxList == null)
{
string[] list = TranslationHelper.GetTranslation("item_Complexities").Split(',');
Array listVal = Enum.GetValues(typeof(Complexities));
if (list.Length != listVal.Length)
throw new Exception("Invalid Complexities translations (item_Complexities)");
m_cxList = new List<Complexity>();
for (int i = 0; i < list.Length; i++)
{
Complexity cx = (ComplexitylistVal.GetValue(i);
ComplexityHelper ch = new ComplexityHelper(cx, list[i]);
m_cxList.Add(ch);
}
}
return m_cxList;
}
}
虽然可行,但我对此并不满意,因为我必须为我需要在选择列表中使用的各种枚举进行类似的编码。
有没有人对更简单或更通用的解决方案有建议?
谢谢 博格丹