下面是我的代码,它的工作原理非常完美,除了一种情况:当我有一个xAttribute of 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;
}发布于 2011-12-15 16:38:01
我刚用了XmLConvert。是个简单的解决办法。它甚至适用于0和1。
问候
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;
}
if(typeof(T) == typeof(bool))
{
object value = XmlConvert.ToBoolean(xAttribute.Value);
output = (T) value;
return true;
}
output = (T)Convert.ChangeType(xAttribute.Value, typeof(T));
return true;
}https://stackoverflow.com/questions/8502849
复制相似问题