2013-10-26 3 views
0

Я ищу совет по правильной структуре данных для использования. Я уверен, что это должно быть очевидно, но я не могу найти правильный ответ. Мне нужно хранить экземпляр SOAP службы в структуру данных, которая позволит мне получить доступ к ним, как:Array string многомерный индекс

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] 

Я думал о кортежей и словаря, но немного не уверены, если я могу получить к ним доступ с помощью нескольких индексов на основе строки , Любой может помочь объявить правильную структуру для достижения этой цели? Thanks

ответ

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"]; 
Смежные вопросы