我试图将XElement
转换为null
或提供任何类型的T
。有人可以帮助使用这种通用的扩展方法吗?
这是我到目前为止有:
public static T? ConvertToNullable<T>(this XElement element) where T : IConvertible
{
if (element.IsNill())
return null;
else
return (T)element;
}
错误:
The type
T
must be a non-nullable value type in order to use it as parameterT
in the generic type or methodSystem.Nullable<T>
可以这样做或做我必须写bool
一个独立的扩展,byte
,int
,long
,double
,decimal
等?
编辑
我不应该使用泛型这个在所有。请参阅下面的答案。
谢谢,但不起作用。我得到“不能将XElement'转换为'T'”。 – devuxer 2009-09-06 23:21:53
也许“where T:struct,IConvertible”呢?使用两个子句? – 2009-09-06 23:23:51
@Matt,感谢您的想法,但我想我现在已经明白了(请参阅编辑和回答)。我可以轻松地做演员,我称之为扩展方法,无论如何我认为这种方法更加清晰。 – devuxer 2009-09-06 23:45:43