Пишу расширение для типа XElement. Смотрю типы, к которым приводится XElement и перечисляю их в ограничении:
public static T SafeElementValue<T>(this XElement xElement, XName name)
where T : string, bool, bool?, int, int?, uint, uint?, long, long?, ulong, ulong?, float, float?, double, double?, decimal, decimal?, DateTime, DateTime?, TimeSpan, TimeSpan?, Guid, Guid?
{
var childElement = xElement.Element(name);
return childElement == null ? null : (T) childElement;
}
В таком виде компилятору не нравятся типы с вопросами. Исправляю на Nullable<тип> – пишет, что к T не приводится childElement.
Как описать правильно?
Здравствуйте, Vovan_2, Вы писали:
V_>V_>public static T SafeElementValue<T>(this XElement xElement, XName name)
V_> where T : string, bool, bool?, int, int?, uint, uint?, long, long?, ulong, ulong?, float, float?, double, double?, decimal, decimal?, DateTime, DateTime?, TimeSpan, TimeSpan?, Guid, Guid?
V_>{
V_> var childElement = xElement.Element(name);
V_> return childElement == null ? null : (T) childElement;
V_>}
V_>
V_>В таком виде компилятору не нравятся типы с вопросами. Исправляю на Nullable<тип> – пишет, что к T не приводится childElement.
V_>Как описать правильно?
Никак. То, чего вы хотите, сделать нельзя.