Ответ 1
public static XElement AddOptionalElement<T>(
this XElement parentElement, string childname, T? childValue)
where T : struct
{
// ...
}
Как написать общий метод, который может использовать объект Nullable для использования в качестве метода расширения. Я хочу добавить XElement в родительский элемент, но только если значение, которое будет использоваться, не является нулевым.
например.
public static XElement AddOptionalElement<T>(this XElement parentElement, string childname, T childValue){
...
code to check if value is null
add element to parent here if not null
...
}
Если я сделаю это AddOptionalElement<T?>(...)
, тогда я получу ошибки компилятора.
Если я сделаю это AddOptionalElement<Nullable<T>>(...)
, тогда я получу ошибки компилятора.
Есть ли способ, которым я могу это понять?
Я знаю, что могу позвонить своему методу:
parent.AddOptionalElement<MyType?>(...)
но это единственный способ?
public static XElement AddOptionalElement<T>(
this XElement parentElement, string childname, T? childValue)
where T : struct
{
// ...
}
Вам нужно ограничить T
как struct
, иначе он не может быть нулевым.
public static XElement AddOptionalElement<T>(this XElement parentElement,
string childname,
T? childValue) where T: struct { ... }
попробовать
AddOptionalElement<T>(T? param) where T: struct { ... }
Тип Nullable имеет ограничение where T : struct, new()
, поэтому ваш метод obviuosly должен содержать ограничение struct
, чтобы сделать Nullable<T>
работоспособным. Полученный метод должен выглядеть так:
public static XElement AddOptionalElement<T>(this XElement parentElement, string childname, T? childValue) where T : struct
{
// TODO: your implementation here
}