Mam menuManager klasę, do której każdy moduł można dodać klucz oraz z elementem mają być załadowane do głównej treści:Jaki jest najlepszy C# kolekcji z dwóch kluczy i obiektu?
private Dictionary<string,object> _mainContentItems = new Dictionary<string,object>();
public Dictionary<string,object> MainContentItems
{
get { return _mainContentItems; }
set { _mainContentItems = value; }
}
Więc moduł klient rejestruje swoje poglądy tak:
layoutManager.MainContentViews.Add("customer-help", this.container.Resolve<HelpView>());
layoutManager.MainContentViews.Add("customer-main", this.container.Resolve<MainView>());
Więc potem przynieść konkretny widok do przodu mówię:
layoutManager.ShowMainContentView("customer-help");
I, aby uzyskać domyślny widok (pierwszy zarejestrowany widok), mówię:
layoutManager.ShowDefaultView("customer");
To działa dobrze.
Jednakże chcę, aby wyeliminować „zapachy kodu” z łącznikiem, który oddziela nazwę modułu i zobaczyć nazwisko, więc chciałbym zarejestrować z tym poleceniem:
layoutManager.MainContentViews.Add("customer","help", this.container.Resolve<HelpView>());
ale co to jest najlepszym sposobem aby zastąpić mój obecny słownik, np co przychodzi na myśl, są takie:
Dictionary<string, string, object> (doesn't exist)
Dictionary<KeyValuePair<string,string>, object>
Dictionary<CUSTOM_STRUCT, object>
Nowa kolekcja musi być w stanie to zrobić:
- uzyskać widok z moduł i widok klucz (np „klient”, „pomoc” zwraca 1 view)
- uzyskać kolekcję wszystkich poglądów przez klucz modułu (np "klient" zwraca 5 wyświetleń)
Elegant w użyciu. – Will
działa dobrze, dziękuję. –
Gdybym tylko widział jeszcze jeden var ... – nawfal