У меня MenuManager класс, к которому каждый модуль может добавить ключ и и элемент, который будет загружен в основное содержание:Какая лучшая коллекция C# с двумя ключами и объектом?
private Dictionary<string,object> _mainContentItems = new Dictionary<string,object>();
public Dictionary<string,object> MainContentItems
{
get { return _mainContentItems; }
set { _mainContentItems = value; }
}
Таким образом, модуль клиент регистрирует свои взгляды как это:
layoutManager.MainContentViews.Add("customer-help", this.container.Resolve<HelpView>());
layoutManager.MainContentViews.Add("customer-main", this.container.Resolve<MainView>());
Так потом принести конкретный вид спереди я говорю:
layoutManager.ShowMainContentView("customer-help");
И чтобы получить (вид сверху зарегистрирован), я говорю:
layoutManager.ShowDefaultView("customer");
И это отлично работает.
Однако, я хочу, чтобы устранить «код запах» с дефисом, который отделяет имя модуля и просматривать имя, поэтому я хотел бы зарегистрировать с помощью этой команды:
layoutManager.MainContentViews.Add("customer","help", this.container.Resolve<HelpView>());
Но что это лучший способ заменить мой текущий словарь, например что приходит на ум, это:
Dictionary<string, string, object> (doesn't exist)
Dictionary<KeyValuePair<string,string>, object>
Dictionary<CUSTOM_STRUCT, object>
Новая коллекция должна быть в состоянии сделать это:
- получить вид с модуль и ключ просмотра (например, «клиент», «помощь» возвращает 1 вид)
- получить коллекцию всех представлений с помощью ключа модуля (например, «клиент» возвращает 5 просмотров)
Элегантный в использовании. – Will
работал хорошо, спасибо. –
Если бы я видел еще один вар там ... – nawfal