类继承泛型字典<string,IFoo>和Interface

leo*_*ora 2 c# generics collections interface

我有一个继承通用字典和接口的类

public class MyDictionary: Dictionary<string, IFoo>, IMyDictionary
{
}
Run Code Online (Sandbox Code Playgroud)

问题是这个类的消费者正在寻找界面的'.Keys'和".Values"属性,所以我补充说:

    /// <summary>
    /// 
    /// </summary>
    ICollection<string> Keys { get; }

    /// <summary>
    /// 
    /// </summary>
    IEnumerable<IFoo> Values { get; }
Run Code Online (Sandbox Code Playgroud)

到界面.

现在,实现也需要这个,但是当我实现这些时,我得到这个错误:

"关键字new是必需的,因为它隐藏了属性键......"

所以我需要做什么.我应该在这些获取属性前添加"新"吗?

Cam*_*and 6

另一种选择是将接口上的类型更改为:

public interface IMyDictionary
{
    /// <summary>
    /// 
    /// </summary>
    Dictionary<string, IFoo>.KeyCollection Keys { get; }

    /// <summary>
    /// 
    /// </summary>
    Dictionary<string, IFoo>.ValueCollection Values { get; }
}
Run Code Online (Sandbox Code Playgroud)

这样,接口已经由字典实现,省去了再次实现属性的麻烦,并且它不会隐藏或覆盖原始实现.