通过ICollection接口继承的Dictionary,但不实现所有成员

时间:2018-11-13 09:30:05

标签: c# dictionary inheritance interface implementation

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

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

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

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

我没有看到IsReadOnly类(.NET内置类)中的Dictionary<TKey, TValue>属性,然后ReadOnly类中不存在Dictionary类的属性实现如下:此类也通过ICollection<KeyValuePair<TKey, TValue>>接口继承。

我也对CopyTo方法有相同的查询。

这只是我的概念性问题。

1 个答案:

答案 0 :(得分:1)

属性是在Dictionary<TKey, TValue>上实现的。您在实例上看不到它的原因是how the member is implemented的方式:

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

成员名称前面的限定符表示explicit implementation。这意味着您只能在显式通过强制转换引用该类型时访问该成员:

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