Tengo una colección que implementa una interfaz que amplía IList < T> y Lista.Cómo resolver la ambigüedad de la llamada entre Generic.IList <T> .this [] e IList.this []?
public Interface IMySpecialCollection : IList<MyObject>, IList { ... }
Eso significa que tengo dos versiones del indexador.
deseo de la aplicación genérica para ser utilizado, por lo que implemento que uno normalmente:
public MyObject this[int index] { .... }
solo me falta la versión IList para la serialización, así que lo apliquen de manera explícita, a mantenerlo oculto:
object IList.this[int index] { ... }
Sin embargo, en mis pruebas de unidad, la siguiente
MyObject foo = target[0];
resultados en un com apiladora de error
La llamada es ambigua entre las siguientes métodos o propiedades
Estoy un poco sorprendido por esto; Creo que lo he hecho antes y funciona bien. ¿Que me estoy perdiendo aqui? ¿Cómo puedo obtener IList < T> y IList para que coexistan dentro de la misma interfaz?
Editar IList < T> hace no implemento IList, y yo debe aplicar IList para la serialización. No estoy interesado en soluciones alternativas, quiero saber lo que me estoy perdiendo.
Editar nuevamente: Tuve que quitar IList de la interfaz y moverlo a mi clase. No quiero hacer esto, ya que las clases que implementan la interfaz eventualmente se serializarán en Xaml, lo que requiere que las colecciones implementen IDictionary o IList ...
¿Puedo preguntar cómo estás serializar un indexador de encargo? Cuando traté de indexar un indexador personalizado (para WCF), recibí un mensaje ASP de pantalla amarilla de muerte que decía que los indexadores personalizados no pueden ser serializados. Finalmente abandoné la idea. –