首页 > 解决方案 > Dictionary 通过 ICollection 接口继承,但不实现所有成员

问题描述

在我当前的实现中,我试图创建由IDictionary<string, Object>接口继承的自定义类。

在实施时,我必须实施以下属性

IsReadOnly { get; } part of  ICollection<KeyValuePair<TKey, TValue>> interface.

因此,在执行此操作时,我遇到了以下情况,

我没有看到(.NET 内置类)类中的属性,那么类中不存在 in 的属性实现,IsReadOnly因为 该类也是通过接口继承的。Dictionary<TKey, TValue>ReadOnlyDictionaryICollection<KeyValuePair<TKey, TValue>>

CopyTo我对方法也有同样的疑问。

这只是我的概念问题。

标签: c#dictionaryinheritanceinterfaceimplementation

解决方案


该属性在 上实现Dictionary<TKey, TValue>。您在实例上看不到它的原因是成员的实现方式

bool ICollection<KeyValuePair<TKey,TValue>>.IsReadOnly {
    get { return false; }
}

member-name 前面的限定符表示显式实现这意味着您只有在通过强制转换明确引用该类型时才能访问该成员:

var readOnly = ((ICollection<MyType>)myMap.IsReadOnly;

推荐阅读