Возможно, вы захотите использовать перечисления , а не структуры с константами.
Enums дает вам много возможностей, не так сложно использовать его строковые значения для сохранения в базе данных и т. Д.
public enum Profession
{
Student,
WorkingProfessional,
Others
}
А теперь:
Чтобы проверить наличие значения в Profession
по имени значения:
var result = Enum.IsDefined(typeof(Profession), "Retired"));
// result == false
Чтобы получить значение перечисления в виде строки:
var result = Enum.GetName(typeof(Profession), Profession.Student));
// result == "Student"
Если вы действительно не можете избежать использования имен значений с пробелами или другими специальными символами, вы можете использовать DescriptionAttribute
:
public enum Profession
{
Student,
[Description("Working Professional")] WorkingProfessional,
[Description("All others...")] Others
}
И теперь, чтобы получить описание из значения Profession
, вы можете использовать этот код (реализованный здесь как метод расширения):
public static string Description(this Enum e)
{
var members = e.GetType().GetMember(e.ToString());
if (members != null && members.Length != 0)
{
var attrs = members.First()
.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs != null && attrs.Length != 0)
return ((DescriptionAttribute) attrs.First()).Description;
}
return e.ToString();
}
Этот метод извлекает описание, определенное в атрибуте, и, если его нет, возвращает имя значения. Использование:
var e = Profession.WorkingProfessional;
var result = e.Description();
// result == "Working Professional";