Вот мой код, который отлично работает, за исключением одного случая: когда у меня xAttribute
bool
, значит xAttribute.Value == 1
.В этой ситуации Convert
не работает для числового типа.
Обычно я просто использовал бы output = (bool) xAttribute
, который работает;но в этом методе у меня есть универсальный тип , поэтому я хочу использовать этот универсальный тип по линиям output = (T) xAttribute
.Как я могу это сделать?
public static bool TryGetValueFromAttribute<T>(
this XElement element,
String attName,
out T output,
T defaultValue)
{
var xAttribute = element.Attribute(attName);
if (xAttribute == null)
{
output = defaultValue;
return false;
}
output = (T)Convert.ChangeType(xAttribute.Value, typeof(T));
return true;
}