позволяет анализировать значение по умолчанию, если значение перечисления не найдено < /li>
.
Код: Выделить всё
public static T GetEnumFromString(string value, T defaultValue) where T : Enum
{
if (string.IsNullOrEmpty(value)) return defaultValue;
foreach (T item in Enum.GetValues(typeof(T)))
{
if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item;
}
return defaultValue;
}
Достаточно справедливо, но есть ли обходной путь, чтобы разрешить общий перечисление, или мне придется имитировать функцию Parse и передавать тип в качестве атрибута, который заставляет уродливое требование к вашему коду. 1 < /h2>
Я остановился (я оставил цикл, чтобы сохранить нечувствительность к случаю - я использую это при анализе XML) < /p>
Код: Выделить всё
public static class EnumUtils
{
public static T ParseEnum(string value, T defaultValue) where T : struct, IConvertible
{
if (!typeof(T).IsEnum) throw new ArgumentException("T must be an enumerated type");
if (string.IsNullOrEmpty(value)) return defaultValue;
foreach (T item in Enum.GetValues(typeof(T)))
{
if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item;
}
return defaultValue;
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... to-an-enum
Мобильная версия