J'ai des problèmes avec l'interface et l'héritage. Voici mon problème:impossible d'implémenter le membre d'interface car il n'a pas le type de retour correspondant
J'ai deux interfaces:
public interface IElementA
{
List<IElementA> Child { get; }
}
// The goal is to add some properties to the main interface
public interface IElementB : IElementA
{
string Name { get; }
}
et une classe qui implémentent IElementB
public class ElementB : IElementB
{
protected List<ElementB> m_Child = new List<ElementB>();
public List<ElementB> Child { get { return m_Child; } }
public string Name { get { return "element B"; }
}
Je suis l'erreur:
'ElementB' does not implement interface membre 'IElementA.Child'.
'ELementB.Child' cannot implement 'IElementA.Child' because it does not have the matching return type of 'List<IElementA>'."
Je comprends que je besoin d'écrire
public List<IElementA> Child { get { return m_Child; } }
Et connaissez le tour de modèle, mais il fonctionne uniquement avec une liste de type différent de IElementA.
Avez-vous des idées pour résoudre mon problème?
Cordialement JM
'Liste' n'est pas du même type que 'Liste ', c'est pourquoi vous obtenez l'erreur de compilation. –
DavidG
regardez * Covariance * – Rahul
DavidG a la bonne réponse – Picnic8