Если бы существовали интерфейсы словаря только для чтения IReadableDictionary<TKey, out TValue>
и IReadableDictionary<TValue>
(использующие тип 'Object' в индексаторе), было бы возможно для кода, который должен был читать, но не писать, словарь, чтобы принять любой словарь со значениями типа, совместимого с требуемым типом (второй интерфейс будет использоваться, чтобы позволить коду, который хочет получить экземпляры basicThing
, связанные с экземплярами Mammal
, принять такие вещи, как Dictionary<Cat, basicThing>
или Dictionary<Animal, DerivedThing>
). Нетрудно было бы извлечь класс из Dictionary<TKey, TValue>
и добавить такие интерфейсы к этому классу, но я не знаю ни одного такого стандартного интерфейса. ILookup
смутно похож, но совершенно другой.