2013-10-26 158 views
0

我正在尋找關於使用正確數據結構的建議。我相信這應該是顯而易見的,但我無法找到正確的答案。我需要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] 

我想過元組和字典,而是有點不確定,如果我可以將它們使用基於字符串多個索引訪問。任何人都可以幫助宣佈正確的結構來實現這一目標? 謝謝

回答

0

帶複合鍵的字典是一個選項。 Tuple是創建這樣的鍵已經擁有所有必要的比較/散列方法廉價的方式:

Dictionary<Tuple<string,string>, Instance> instances = new ....; 

instances.Add(Tuple.Create("DEV", "EU"), euDevInstance);.... 


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

注意:如果你決定走這條路線與所需的字段和比較創建自定義類/散列方法可以使你的代碼更可讀。

0

概念上,它可能是這樣的:

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