C# Generics
От: Vovan_2 Россия  
Дата: 25.05.11 15:23
Оценка:
Пишу расширение для типа 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.
Как описать правильно?
Re: C# Generics
От: Lloyd Россия  
Дата: 25.05.11 15:25
Оценка: 2 (1) +1
Здравствуйте, 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_>Как описать правильно?

Никак. То, чего вы хотите, сделать нельзя.
Re: C# Generics
От: samius Япония http://sams-tricks.blogspot.com
Дата: 25.05.11 15:29
Оценка:
Здравствуйте, Vovan_2, Вы писали:

V_>Пишу расширение для типа XElement. Смотрю типы, к которым приводится XElement и перечисляю их в ограничении:


Перечислить там можно базовый тип для T, а так же набор интерфейсов.

V_>В таком виде компилятору не нравятся типы с вопросами. Исправляю на Nullable<тип> – пишет, что к T не приводится childElement.

Его так же должно стошнить от типов без вопросов, если их больше одного и они не интерфейсы.
V_>Как описать правильно?
Вы хотите вернуть null вместо bool и считаете это правильным?
Re[2]: C# Generics
От: Vovan_2 Россия  
Дата: 25.05.11 15:37
Оценка:
S>Его так же должно стошнить от типов без вопросов, если их больше одного и они не интерфейсы.
Да, тошнит...

S>Вы хотите вернуть null вместо bool и считаете это правильным?

Это я глупость написал, конечно. Я хотел оставить только типы с вопросами. Правда, мне уже сказали, что этого нельзя...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.