覆盖Dictionary <K,V> .KeyCollection

Him*_*ack 3 .net c# dictionary overriding

我试图继承Dictionary<K,V>,但我的问题是,当查询Dictionary.Keys时,我想覆盖它们.字典的(即KeyCollection).

怎么解决这个问题?

谢谢

aba*_*hev 7

  • 封装 Dictionary<K,V>

  • 实施IDictionary<K,V>.

要么

public new YourType Keys
{
    get
    {
        return yourVersion;
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:

  • IDictionary<K,V>.Keys 有类型 ICollection<Key>

  • Dictionary<K,V>.Keys有类型,Dictionary<K, V>.KeyCollection但它被标记为,sealed所以你将无法继承它,所以选项1似乎更现实.

  • 我绝对会**推荐你的第一个选项(封装`Dictionary <K,V>`并实现`IDictionary <K,V>`),否则当你把字典转换成`IDictionary <K,V>`时你会发现由于使用了`new`关键字,因此忽略了`Keys`属性. (3认同)