一般的な拡張メソッド (AsXml など) を作成しましたが、一部のクラスでインターフェイス (IXmlable) による制約が必要です。
制約を導入するとすぐに、いくつかのメソッドが私と議論しています。
私の方法の1つは a を返すことでList<Interest>
あり、コンパイラは次のように言います:
型 'System.Collections.Generic.List' は、ジェネリック型またはメソッド 'MyWebApp.Entities.Extension.AsXml(T)' の型パラメーター 'T' として使用できません。「System.Collections.Generic.List」から「MyWebApp.Interfaces.IXmlable」への暗黙的な参照変換はありません。
これは私のクラスです:
public class Person : IXmlable
{
public string Name { get; set; }
public List<Interest> Interests { get; set; } // My Interest class also implements IXmlable
}
私の拡張メソッドは次のようになります。
public static class Extension
{
public static string AsXml<T>(this T entity) where T : IXmlable
{
return MakeItXml(entity);
}
}
この私の方法:
return MyMethodThatReturnsAListOfPersons().AsXml();