Как получить строчное представление перечисления в C #? - PullRequest
9 голосов
/ 09 декабря 2010

У меня есть следующее enum в приложении ASP.NET MVC, и я хочу использовать это перечисление в качестве параметра.Для этого я хотел бы вернуть строковое строчное представление этого enum.

 public enum SortOrder
 {
      Newest = 0,
      Rating = 1, 
      Relevance = 2 
 }

Как я могу получить строчное представление перечисления в C #?Я бы хотел, чтобы перечисления также сохранили свое естественное представление в заглавных буквах.

Ответы [ 4 ]

12 голосов
/ 09 декабря 2010

Нет, кроме метода расширения нет object.

public static string ToLower (this object obj)
{
  return obj.ToString().ToLower();
}
2 голосов
/ 09 декабря 2010

Есть ли способ получить строку в исключении нижнего регистра g: value.ToString (). ToLower ()?

Нет (если вы не измените перечисление: newest,rating, relevance ...)

Обычный метод - добавить атрибут к каждому члену перечисления, указав строку, с которой вы хотите связать его, например: http://weblogs.asp.net/grantbarrington/archive/2009/01/19/enumhelper-getting-a-friendly-description-from-an-enum.aspx

0 голосов
/ 09 декабря 2010

Если то, что отображает текст перечисления, знает (и использует) пространство имен System.ComponentModel, то вы можете украсить перечисление с помощью System.ComponentModel.DescriptionAttribute и ввести строчную версию в себе.

Если вы непосредственно получаете строковое значение, вы все равно можете это сделать, хотя накладные расходы на написание кода отражения могут быть больше, чем вы хотите иметь дело.

HTH, Брайан

0 голосов
/ 09 декабря 2010

Вы также можете использовать Enum.GetNames(...), чтобы получить строковый массив, содержащий значения перечисления.Затем преобразуйте их в нижний регистр.Чтобы преобразовать строку в соответствующее значение перечисления, вы можете использовать метод Enum.Parse, передав true в третий параметр, что делает регистр нечувствительным к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...