В этот момент я столкнулся с ситуацией с использованием 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....
На самом деле я не хочу этим заниматься, а скорее полагаюсь на контейнер для создания этих объектов для меня, но как, черт возьми, я могу это сделать? Я действительно не хочу, чтобы моя модель представления элементов имела какие-либо сведения о моей модели представления элементов, кроме интерфейса, который она реализует, но у меня есть около 15 таких элементов меню, каждый с разными значениями свойств.
Я не новичок в DI / IoC, но для меня это большой вопрос. Я вижу и извлекаю выгоду из внедрения моих услуг, но что вы делаете с конкретными ценностями?
Неужели я здесь совершенно неверно мыслю? Должен ли я просто разрешать конкретный экземпляр из контейнера, а затем затем устанавливать свойства? Это был бы вариант, но я хочу, чтобы мои реквизиты были доступны только для чтения, если это возможно.
Надеюсь, это достаточно ясно, .. кричите на меня, если нет :-)
Любая помощь очень ценится.