ジェネリック入力を受け入れ、入力がデフォルトの場合は 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);
}
}
}
何らかの理由で、C# はこれを好みません。
メソッドのシグネチャ (newXElementOrNull) を次のように述べています。
型パラメーター 'T' は、外部型 'AddXMLTest.Converter' の型パラメーターと同じ名前です
また、山括弧内の T とパラメーター内の T が強調表示されます。
さらに悪いことに、val == default(T) の部分は好きではありません。演算子 '==' は型 'T' および 'T' のオペランドには適用できないと書かれているからです。
私は何を間違っていますか?