C# 通过继承实现接口

C# 通过继承实现接口,c#,inheritance,interface,C#,Inheritance,Interface,我有一个需要实现方括号操作符的接口。从中继承的类实现了它。但是,它也继承自Dictionary,在Dictionary中实现了相同的运算符: public interface IFoo { IBar this[String tFooName] { get; } } [Serializable] public class ConcreteFoo: Dictionary<String, Bar>, IFoo { // Implement interface by ca

我有一个需要实现方括号操作符的接口。从中继承的类实现了它。但是,它也继承自Dictionary,在Dictionary中实现了相同的运算符:

public interface IFoo
{
    IBar this[String tFooName] { get; }
}


[Serializable]
public class ConcreteFoo: Dictionary<String, Bar>, IFoo
{
    // Implement interface by calling the dictionary
    public IBar this[String tFooName] { get { return this[tFooName]; } }



    // .... more code ....
}
错误是正确的。因此,我删除了IFoo接口的实现,并希望通过从Dictionary继承,它将自动实现。它没有按我所希望的方式淘出来

我收到错误“未实现接口成员…”

如果不让字典成为私人成员,我该如何解决这个问题??有什么办法吗?

它真的需要从
字典中派生出来吗?根据我的经验,直接从
字典
列表
等中派生很少是一个好主意-只有明确为继承而设计的集合(例如)通常工作良好,适合继承

你能不能让你的
ConcreteFoo
有一个
Dictionary
字段?你在最后一个问题中提到了这一点,但不清楚为什么你试图使用继承而不是组合

如果您确实必须使用继承,您可以使用,如下所示:

IBar IFoo.this[String tFooName] { get { return this[tFooName]; } }
。。。但我建议大家还是更倾向于写作。

它真的需要从
字典中派生出来吗?根据我的经验,直接从
字典
列表
等中派生很少是一个好主意-只有明确为继承而设计的集合(例如)通常工作良好,适合继承

你能不能让你的
ConcreteFoo
有一个
Dictionary
字段?你在最后一个问题中提到了这一点,但不清楚为什么你试图使用继承而不是组合

如果您确实必须使用继承,您可以使用,如下所示:

IBar IFoo.this[String tFooName] { get { return this[tFooName]; } }

。。。但是我建议大家还是喜欢组合。

我的理由是这个对象是一个字典,添加了一些方法和字段。为了简洁起见,我精简了代码。@MarkP:我仍然建议使用composition,但要实现您的界面和
IDictionary
。随着时间的推移,这将比子类化
Dictionary
@MarkP更好:需要字典的代码是否也需要接受您的类型?如果是这样,那么继承是恰当的。我的理由是,这个对象是一个字典,添加了一些方法和字段。为了简洁起见,我精简了代码。@MarkP:我仍然建议使用composition,但要实现您的界面和
IDictionary
。随着时间的推移,这将比子类化
Dictionary
@MarkP更好:需要字典的代码是否也需要接受您的类型?如果是这样,那么继承是恰当的。如果没有,构图就更好了。