Создайте расширение для XmlElement
, которое является оболочкой вокруг Enum.Parse
:
static TEnum ParseEnum <TEnum>(this XmlElement element) where TEnum : struct, Enum
{
return Enum.Parse<TEnum>(element.Value);
}
Затем используйте, например:
ItemType = xml.Element("ItemType")?.ParseEnum<ProjectTreeItemTypes>() ?? ProjectTreeItemTypes.None;
Или вы можете сделать расширение ответственным за возврат по умолчанию:
static TEnum TryParseEnum <TEnum>(this XmlElement element, TEnum defaultValue) where TEnum : struct, Enum
{
if (Enum.TryParse<TEnum>(element.Value, out var val))
{
return val;
}
return defaultValue;
}
Использование:
ItemType = xml.Element("ItemType").TryParseEnum(ProjectTreeItemTypes.None);