【问题标题】:Array string multidimension index数组字符串多维索引
【发布时间】:2013-11-05 08:38:58
【问题描述】:

我正在寻找有关要使用的正确数据结构的建议。我相信这应该是显而易见的,但我无法找到正确的答案。我需要将 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]

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

【问题讨论】:

    标签: c# dictionary multidimensional-array tuples


    【解决方案1】:

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

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

    注意:如果您决定走这条路线,创建具有必要字段和比较/散列方法的自定义类可能会使您的代码更具可读性。

    【讨论】:

      【解决方案2】:

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

      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"];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-20
        • 2022-10-05
        相关资源
        最近更新 更多