2010-05-22 132 views
3

我正在寻找一些关于枚举和检索关联字符串值的最佳实践建议。鉴于此:ASP.NET中的枚举和字符串值

public enum Fruits { 
    Apple, 
    Orange, 
    Grapefruit, 
    Melon 
} 

什么是获得名称的相关字符串值的最佳方式是什么?例如。 “葡萄柚”,因为字符串值可能与枚举中的表示不匹配。例如“Casaba Melon”

我目前的想法是函数接受一个枚举并返回一个字符串,但这不意味着硬编码字符串值(我不喜欢这样做)?是否正在使用资源文件,其中的字符串可以通过枚举重新获取?

+2

您可能要考虑将你的枚举中的值改为更加中立的东西,我保证它的工作就像一个例子。 – R0MANARMY 2010-05-22 22:50:07

+0

你的观点已被采纳。这就是你在周日早上9点提问的原因。 – Jason 2010-05-22 22:58:27

+0

就这样,你的选票就不存在了,我甚至会给它一个+1。 – R0MANARMY 2010-05-23 03:20:02

回答

4

要回答你的问题,你可以修饰你的枚举属性,给他们正确的显示字符串。下面是一些例子

这种方法的主要限制是,如果你需要国际化你的应用程序,我不知道的方法,使属性字符串变化基于线程语言环境的值(或者用于区分语言环境的任何方式)。

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() 
+0

我相信你的解决方案属于**“我目前的想法是函数接受一个枚举并返回一个字符串,但这不意味着硬编码字符串值(我不愿意这么做)?”**问题的一部分。但是,谢谢你加入社区并贡献自己的力量。 – R0MANARMY 2010-05-23 03:19:06