У меня есть интерфейс, который требует реализации оператора квадратных скобок. Класс, который наследует от этого, реализует это. Однако он также наследует от Dictionary <>, где реализован тот же оператор:
public interface IFoo
{
IBar this[String tFooName] { get; }
}
[Serializable]
public class ConcreteFoo: Dictionary<String, Bar>, IFoo
{
// Implement interface by calling the dictionary
public IBar this[String tFooName] { get { return this[tFooName]; } }
// .... more code ....
}
Когда я пытаюсь использовать код, компилятор ссылается на непосредственный интерфейс, который был реализован, и говорит, что я не могу назначить ему:
MyClass[tKeyStr] = new Bar();
Ошибка правильная. Итак, я удалил свою реализацию интерфейса IFoo и надеялся, что, наследуя от Dictionary <>, он будет реализован автоматически. Это не получилось так, как я хотел.
Я получаю сообщение об ошибке "не реализуется элемент интерфейса ...".
Как бы я решил эту проблему, не превращая словарь в личный член ?? Есть ли способ?