我已经制作了一个通用扩展方法(即 AsXml),但仍然希望在我的某些类上使用接口(IXmlable)进行约束。
一旦我介绍了我的约束,我的一些方法正在与我争论。
我的一种方法是返回 aList<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();