Я пытаюсь преобразовать 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
Возможно, «где T: struct, IConvertible» тогда? Используйте оба предложения? –
@Matt, Спасибо за идеи, но я думаю, что я понял это сейчас (см. Править и отвечать). Я могу так же легко сделать актерский состав, где я называю метод расширения, который, я думаю, более ясен в любом случае. – devuxer