J'ai une collection qui implémente une interface qui étend à la fois IList < T> et List.Comment résoudre l'ambiguïté d'appel entre Generic.IList <T> .this [] et IList.this []?
public Interface IMySpecialCollection : IList<MyObject>, IList { ... }
Cela signifie que j'ai deux versions de l'indexeur.
Je souhaite la mise en œuvre générique à utiliser, donc je mets en œuvre que l'on normalement:
public MyObject this[int index] { .... }
Je ne ai besoin de la version IList pour la sérialisation, donc je mets en œuvre explicitement, de le garder caché:
object IList.this[int index] { ... }
Cependant, dans mes tests unitaires, les éléments suivants
MyObject foo = target[0];
résultats dans un com erreur piler
L'appel est ambigu entre les méthodes ou propriétés
Je suis un peu surpris de cela; Je crois que je l'ai déjà fait et ça marche bien. Qu'est-ce que j'oublie ici? Comment puis-je faire coexister IList < T> et IList dans la même interface?
Modifier IList < T> ne pas mettre en œuvre IList, et je doit mettre en œuvre IList pour la sérialisation. Je ne suis pas intéressé par les solutions de contournement, je veux savoir ce qui me manque.
Modifier à nouveau: J'ai dû supprimer IList de l'interface et la déplacer dans ma classe. Je ne veux pas faire cela, car les classes qui implémenteront l'interface finiront par être sérialisées en Xaml, ce qui nécessite des collections pour implémenter IDictionary ou IList ...
Puis-je demander comment vous sérialisation d'un indexeur personnalisé? Lorsque j'ai essayé d'indexer un indexeur personnalisé (pour WCF), j'obtiens un message ASP-écran-de-mort indiquant que les indexeurs personnalisés ne peuvent pas être sérialisés. J'ai finalement abandonné l'idée. –