Направих общ метод за разширение (т.е. AsXml), но все още искам ограничение с интерфейс (IXmlable) за някои от моите класове.
Веднага след като въведох моето ограничение, някои от моите методи ми се карат.
Един от моите методи е връщане на List<Interest>
и компилаторът казва:
Типът „System.Collections.Generic.List“ не може да се използва като параметър на типа „T“ в общия тип или метод „MyWebApp.Entities.Extension.AsXml(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();