В этот момент я столкнулся с ситуацией с использованием Unity, которую я не знаю, как решить / приблизиться ... Вот моя проблема.
Я разрабатываю приложение WPF и использую MVVM (Prism Implimentation, следовательно, контейнер Unity). У меня есть ViewModel с именем MenuItemsViewModel
(множественное число), который содержит IEnumerable
из MenuItemViewModel
(единственное число). В конструкторе MenuItemsViewModel
я заполняю эту коллекцию из функции генератора следующим образом ...
yield return new MenuItemViewModel(eventAggregator)
{
Text = "Dashboard",
CommandText = "DASHBOARD"
};
yield return new MenuItemViewModel(eventAggregator)
{
Text = "Areas",
CommandText = "AREAS"
};
yield return new MenuItemViewModel(eventAggregator)
{
Text = "Users",
CommandText = "USERS"
}; //etc....
Я действительно не хочу делать это, а скорее полагаюсь на контейнер, чтобы сконструировать эти объекты для меня, но как, во имя Бога, я могу это сделать? Я на самом деле не хочу, чтобы моя ViewModel Items имела какие-либо знания о моей ViewModel Item, кроме интерфейса, который он реализует, но у меня есть около 15 таких пунктов меню, каждый из которых имеет разные значения свойств.
Я не совсем новичок в DI / IoC, но это большой вопрос для меня. Я вижу и получил пользу от инъекции моих услуг, но что вы делаете с конкретными ценностями?
Я думаю, что здесь я полностью ошибаюсь? Должен ли я просто разрешить конкретный экземпляр из контейнера и затем установить свойства? Это был бы вариант, но мне бы хотелось, чтобы мои реквизиты были доступны только для чтения.
Надеюсь, это достаточно ясно, .. кричите на меня, если нет: -)
Любая помощь очень ценится.