我正在尝试实现一个MultiDictionary:一个在每个键中包含List的字典。
我希望能够使用添加分配运算符和索引器向字典添加元素:
myMultiDictionary[key] += elementToAdd;
我首先创建了一个自定义的AddableList,它继承了List并重载了+
和-
运算符,让我使用了加法赋值运算符:
myAddableList += elementToAdd;
MultiDictionary是Dictionary<keyType, AddableList<contentType>>
的简单继承。
我遇到了索引器问题。我希望保持Dictionary继承使用字典键的O(1)性能。但是,我必须重新定义索引器:
继承如何为已定义索引器的类工作? 我的新索引器会覆盖字典中定义的所有访问方法吗?
答案 0 :(得分:1)
由于Dictionary的索引器未标记为虚拟,因此您无法真正覆盖它。您只能通过添加新的&#39;来隐藏它。您的索引器的关键字,但不要这样做,任何人都可以将您的MultiDictionary向上转换为Dictionary并使用基类的索引器。对您而言,最佳解决方案是,您的MultiDictionary应该实现接口IDictionary,而不是从Dictionary继承,而不是在MultiDictionary内部保存私有Dictionary实例,并将所有接口实现重定向到Dictionary实例,而无需任何自定义逻辑。换句话说,只需在字典中创建代理。