如果我有一个带有字典字段 foo 的类 A,我怎样才能使用 foo 作为数据集快速实现 A 的 IDictionary?



我有以下代码:

public class A
{
    Dictionary<T1,T2> foo
    var otherVariable;
    // some other irrelevant code
}

我希望A能够实现IDictionary<T1,T2>或者能够容易地将A用作Dictionary<T1,T2>

到目前为止,我看到了两个明显的解决方案:

  1. 使用等代码显式实现

    public int Count { get { return foo.Count();} }

  2. 添加ADictionary<T1,T2>的隐式转换,这对我来说或多或少已经足够了。。。目前。

我不喜欢2,因为我希望Afoo多做一点。

我显然可以做1(事实上我做了),但实现IDictionary<T1,T2>的所有方法可能会有点长。

还有第三条路吗?

还有第三条路吗?

不,没有第三种方法:如果您希望A的实例像IDictionary<T1,T2>一样可用,并且不希望从Dictionary<T1,T2>派生类,那么您必须使用列出的两种方法。

[我想]能够容易地将A用作Dictionary<T1,T2>

只有当类A确实是字典时,从字典派生才有意义。另一方面,如果它只有一个字典,而不是字典,那么您可能需要使用转换运算符,甚至需要为转换使用一个适当命名的属性:

public IDictionary<T1,T2> AsDictionary => foo; // C# 6 syntax

public IDictionary<T1,T2> AsDictionary { get { return foo; } } // Legacy C# syntax

我找到了另一个解决方案,这是一种使用Visual Studio 2015实现目标的自动化方式。

当我将接口IInterface添加到具有已经实现它的字段成员foo的类A时,它为我提供了实现IInterfacefoo的选项。

最新更新