我正在尝试编写一个接受泛型输入的方法,如果输入是默认值则返回null,否则返回XElement.
顺便说一句,我对通用方法非常认真,而且显然是google-fu.
这是我到目前为止所拥有的:
public static class ConversionClass<T>
{
public static XElement newXElementOrNull<T>(string name, T val)
{
if ((T.type == "String") && (val == String.Empty))
{
return null;
}
if (val == default(T))
{
return null;
}
else
{
return new XElement(name, val);
}
}
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,C#不喜欢这样.
它在方法签名(newXElementOrNull)上说:
类型参数"T"与外部类型"AddXMLTest.Converter"中的类型参数同名
它突出了角度括号中的T和参数中的T.
更糟糕的是它不喜欢val == default(T)部分,因为它表示Operator'=='不能应用于'T'和'T'类型的操作数.
我究竟做错了什么?
显然,此方法位于已指定的类中<T>.这意味着您可以省略此类型参数,泛型类的方法也是自动通用的.
我希望也会T.type导致错误,但这取决于外部类的类型约束.要获得完整答案,请发布该类的外部定义(不是所有成员).
它不喜欢
val == default(T)
这很可能是第一次的后续错误.