我有一个集合,它实现了一个扩展 IList<T> 和 List 的接口。
public Interface IMySpecialCollection : IList<MyObject>, IList { ... }
这意味着我有两个版本的索引器。
我希望使用通用实现,所以我通常实现它:
public MyObject this[int index] { .... }
我只需要 IList 版本进行序列化,所以我明确地实现它,以保持它隐藏:
object IList.this[int index] { ... }
但是,在我的单元测试中,以下
MyObject foo = target[0];
导致编译器错误
以下方法或属性之间的调用不明确
我对此有点惊讶;我相信我以前做过,而且效果很好。我在这里想念什么?如何让 IList<T> 和 IList 在同一个接口中共存?
编辑IList<T>没有实现 IList,我必须实现 IList 进行序列化。我对解决方法不感兴趣,我想知道我缺少什么。
再次编辑:我不得不从界面中删除 IList 并将其移动到我的班级。我不想这样做,因为实现接口的类最终会被序列化为 Xaml,这需要集合来实现 IDictionary 或 IList...