C# 嵌套字典的包装器

C# 嵌套字典的包装器,c#,class,dictionary,wrapper,C#,Class,Dictionary,Wrapper,我有如下嵌套字典实现: Dictionary<class1, Dictionary<int, class2>> 是的,你可以: public class MyWrapper : Dictionary<class1, Dictionary<int, class2>> {} 或者,一个组合 var obj1 = new MyWrapper(); 您可以使用泛型包装器类,但我不会说这将执行代码的清晰性。此外,您还必须编写能够访问内部词典的方法 pu

我有如下嵌套字典实现:

Dictionary<class1, Dictionary<int, class2>>
是的,你可以:

public class MyWrapper : Dictionary<class1, Dictionary<int, class2>>
{}
或者,一个组合

var obj1 = new MyWrapper();

您可以使用泛型包装器类,但我不会说这将执行代码的清晰性。此外,您还必须编写能够访问内部词典的方法

public class MyWrapper<T1, T2, T3>
{
    private IDictionary<T1, IDictionary<T2, T3>> dictionary;

    public MyWrapper()
    {
        dictionary = new Dictionary<T1, IDictionary<T2, T3>>();
    }

    public static void Main(string[] args)
    {
        var myWrapper = new MyWrapper<int, string, bool>();
    }
}
公共类MyWrapper
{
私人词典;
公共MyWrapper()
{
字典=新字典();
}
公共静态void Main(字符串[]args)
{
var myWrapper=新的myWrapper();
}
}

我曾经写过一个包装器,让我们看看,确实如此


您可以通过以下两个键访问元素:
字典[“key1”,“key2”]

如果您不想创建包装,可以在.cs文件的顶部创建别名

using MyWrapper = 
    System.Collections.Generic.Dictionary<Namespace.class1,
    System.Collections.Generic.Dictionary<int, Namespace.class2>>;
使用MyWrapper=
System.Collections.Generic.Dictionary;
如果您正在与期望使用如此长类型的其他类(您无法控制)进行交互,这一点尤其有用。然后,您可以在文件中使用一个方便的名称,但它实际上是完整类型的别名

以下两种用途是等效的

MyWrapper w1 = new MyWrapper();
MyWrapper w2 = new Dictionary<class1, Dictionary<int, class2>>();
MyWrapper w1=新的MyWrapper();
MyW2=新字典();

优秀的类名/七年过去了,你现在给这个抽象取什么名字?
public class MyWrapper<T1, T2, T3>
{
    private IDictionary<T1, IDictionary<T2, T3>> dictionary;

    public MyWrapper()
    {
        dictionary = new Dictionary<T1, IDictionary<T2, T3>>();
    }

    public static void Main(string[] args)
    {
        var myWrapper = new MyWrapper<int, string, bool>();
    }
}
using MyWrapper = 
    System.Collections.Generic.Dictionary<Namespace.class1,
    System.Collections.Generic.Dictionary<int, Namespace.class2>>;
MyWrapper w1 = new MyWrapper();
MyWrapper w2 = new Dictionary<class1, Dictionary<int, class2>>();