数组字符串多维索引

本文关键字:索引 字符串 数组 | 更新日期: 2023-09-27 18:36:53

我正在寻找有关使用正确数据结构的建议。我相信这应该是显而易见的,但我无法找到正确的答案。我需要将 SOAP 服务实例存储到数据结构中,这将允许我访问它们,例如:

AXLAPIService myInstance = instances["DEV"]["EU"]
// table values
["DEV"]["EU"][instance]
["DEV"]["AM"][instance]
["PROD"]["EU"][instance]
["PROD"]["AM"][instance]
// Data to store
[String][String][Object]

我想到了元组和字典,但有点不确定我是否可以使用基于字符串的多个索引访问它们。任何人都可以帮助宣布实现这一目标的正确结构吗?谢谢

数组字符串多维索引

带有复合键的字典是一个选项。 Tuple创建已经具有所有必要比较/哈希方法的密钥的廉价方法:

 Dictionary<Tuple<string,string>, Instance> instances = new ....;
 instances.Add(Tuple.Create("DEV", "EU"), euDevInstance);....

 var find = instances[Tuple.Create("PROD", "AM");

注意:如果您决定采用此路线,则创建具有必要字段和比较/哈希方法的自定义类可能会使您的代码更具可读性。

从概念上讲,它可以是这样的:

class ConcreteAXLAPIService<T>
{
  private Dictionary<string, T> servicePool;
  public T this[string id]
  {
    get
    {
        return servicePool[id];
    }
  }
}

class MyService<T>
{
    private Dictionary<string, T> methodPool;
    public T this[string id]
    {
      get
      {
          return methodPool[id];
      }
    }
}

用法:

var api = new ConcreteAXLAPIService<MyService>();
...
var apiMethod = api["ServiceName"]["MethodName"];