Ne peut pas implémenter l'interface membre parce qu'il n'a pas la correspondance de type de retour de la Liste<IInterface>

J'ai interfaces IChild et IParent. IParent a un membre qui est un List<IChild>.

Je souhaite avoir des classes qui implémentent IParent où chaque classe a un membre qui met en œuvre IChild:

public interface IChild
{ 
}  

public interface IParent
{  
    List<IChild> a { get; set; }
} 

public class ChildA : IChild
{ 
} 

public class ChildB : IChild
{ 
} 

public class ParentA : IParent
{ 
    public List<ChildA> a { get; set; }
}

public class ParentB : IParent
{ 
    public List<ChildB> a { get; set; }
}

Mais, ce code ne compilera pas. L'erreur est:

`MyApp.Data.ParentA` does not implement interface member `MyApp.Data.IParent.a`.
`MyApp.Data.ParentA.a` cannot implement `MyApp.Data.IParent.a` because it does not have
the matching return type of `System.Collections.Generic.List<MyApp.Data.IChild>`.
Il serait plus sage de déclarer votre List propriétés ILists, ils seraient moins retrictive mais offre la même fonctionnalité. N'aide pas à la question.
ensuite, il peut faire juste IEnumerable. Peut-être pas à l'exigence
IList n'offre pas les mêmes fonctionnalités que List.
vous avez raison, mais, IList, ICollection (thier readonly) ou IEnumerable peut-être une petite promesse de faire qui ne satisfaire à l'exigence de niveau de fonctionnalité.

OriginalL'auteur Sergej Popov | 2012-08-14