У меня есть коллекция, которая реализует интерфейс, расширяющий как IList , так и List.
public Interface IMySpecialCollection : IList<MyObject>, IList { ... }
Это означает, что у меня есть две версии индексатора.
Я хочу, чтобы универсальная реализация использовалась, поэтому я обычно ее реализую:
public MyObject this[int index] { .... }
Мне нужна только версия IList для сериализации, поэтому я реализую ее явно, чтобы скрыть ее:
object IList.this[int index] { ... }
Однако в моих модульных тестах следующее
MyObject foo = target[0];
приводит к ошибке компилятора
Звонок между
следующие методы или свойства
Я немного удивлен этим; Я считаю, что я делал это раньше, и это прекрасно работает. Что мне здесь не хватает? Как можно заставить IList и IList сосуществовать в одном интерфейсе?
Редактировать IList делает не реализации IList, а I должен реализовать IList для сериализации. Меня не интересуют обходные пути, я хочу знать, чего мне не хватает.
Редактировать снова : Мне пришлось удалить IList из интерфейса и перенести его на мой класс. Я не хочу этого делать, так как классы, которые реализуют интерфейс, в конечном итоге будут сериализованы в Xaml, который требует коллекций для реализации IDictionary или IList ...