Ho una collezione che implementa un'interfaccia che estende sia IList < T> sia List.Come risolvere l'ambiguità di chiamata tra Generic.IList <T> .questo [] e IList.questo []?
public Interface IMySpecialCollection : IList<MyObject>, IList { ... }
Ciò significa che ho due versioni dell'indicizzatore.
vorrei che l'implementazione generica da utilizzare, così ho attuare che uno normalmente:
public MyObject this[int index] { .... }
ho solo bisogno la versione IList per la serializzazione, così ho attuare in modo esplicito, di tenerlo nascosto:
object IList.this[int index] { ... }
Tuttavia, nel mio test di unità, il seguente
MyObject foo = target[0];
risultati in un com piler errore
La chiamata è ambigua tra le seguenti metodi o proprietà
Sono un po 'sorpreso di questo; Credo di averlo fatto prima e funziona bene. Cosa mi manca qui? Come posso ottenere IList < T> e IList per coesistere all'interno della stessa interfaccia?
Modifica IList < T> fa non implementare IList, e io deve implementare IList per la serializzazione. Non sono interessato a soluzioni alternative, voglio sapere cosa mi manca.
Modifica di nuovo: Ho dovuto rilasciare IList dall'interfaccia e spostarlo sulla mia classe. Non voglio farlo, poiché le classi che implementano l'interfaccia alla fine verranno serializzate su Xaml, che richiede collezioni per implementare IDictionary o IList ...
Posso chiederle come si sta serializzare un indicizzatore personalizzato? Quando ho provato ad indicizzare un indicizzatore personalizzato (per WCF), ricevo un messaggio giallo-schermo-di-morte in ASP che dice che gli indicizzatori personalizzati non possono essere serializzati. Alla fine ho rinunciato all'idea. –