如果我有一个字段foo是一个字典的A类,我如何使用foo作为数据集快速制作一个实现IDictionary?

时间:2016-01-11 17:05:22

标签: c# dictionary interface

我有以下代码:

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>的隐式转换,这对我的使用来说已经或多或少了......现在。

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

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

    还有第三种方法吗?

2 个答案:

答案 0 :(得分:1)

  

还有第三种方法吗?

不,没有第三种方式:如果您希望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

答案 1 :(得分:1)

我找到了另一种解决方案,一种自动化的方式来实现我想要的Visual Studio 2015。

当我将接口IInterface添加到已经实现它的字段成员A的类foo时,它为我提供了通过{{1}实现IInterface的选项}}