Dependency injection 统一和注册基本类型

Dependency injection 统一和注册基本类型,dependency-injection,unity-container,ioc-container,primitive-types,Dependency Injection,Unity Container,Ioc Container,Primitive Types,就在那时,我遇到了一个使用Unity的情况,我不知道如何解决/接近…这是我的问题 我正在开发一个WPF应用程序,我正在使用MVVM(Prism Implimentation,因此是Unity容器)。我有一个名为MenuItemsViewModel(复数)的视图模型,其中包含MenuItemViewModel(单数)的IEnumerable。在MenuItemsViewModel的构造函数中,我从一个生成器函数填充此集合,如下所示 yield return new MenuItemView

就在那时,我遇到了一个使用Unity的情况,我不知道如何解决/接近…这是我的问题

我正在开发一个WPF应用程序,我正在使用MVVM(Prism Implimentation,因此是Unity容器)。我有一个名为
MenuItemsViewModel
(复数)的视图模型,其中包含
MenuItemViewModel
(单数)的
IEnumerable
。在
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....
我真的不想这样做,而是依靠容器来为我构建这些对象,但以上帝的名义,我该怎么做呢?我真的不想让Items ViewModel了解Item ViewModel所实现的接口之外的其他任何信息,但我有大约15个这样的菜单项,每个菜单项都有不同的属性值

我对DI/IoC并不完全陌生,但这对我来说是个大问题。我看到了我的服务并从中受益,但你如何看待具体的价值观

我在这里的想法完全是错误的吗?我应该从容器中解析具体实例,然后设置属性吗?这将是一个选择,但我希望我的道具是只读的,如果可能的话

我希望这足够清楚,…如果不清楚,就对我大喊大叫:-)


非常感谢您的帮助。

我将使用解析数组插入菜单项:

container
  .RegisterInstance("DASHBOARD", new MenuItemViewModel(...))
  .RegisterInstance("AREAS", new MenuItemViewModel(...))

  .RegisterType<MenuItemsViewModel>(
     new InjectionConstructor(new ResolvedArrayParameter<MenuItemViewModel>()))
容器
.RegisterInstance(“仪表板”,新菜单项视图模型(…)
.RegisterInstance(“区域”,新菜单项视图模型(…)
.RegisterType(
新的注入构造函数(新的ResolvedArrayParameter())

我将使用解析数组插入菜单项:

container
  .RegisterInstance("DASHBOARD", new MenuItemViewModel(...))
  .RegisterInstance("AREAS", new MenuItemViewModel(...))

  .RegisterType<MenuItemsViewModel>(
     new InjectionConstructor(new ResolvedArrayParameter<MenuItemViewModel>()))
容器
.RegisterInstance(“仪表板”,新菜单项视图模型(…)
.RegisterInstance(“区域”,新菜单项视图模型(…)
.RegisterType(
新的注入构造函数(新的ResolvedArrayParameter())

实际上,如果MenuItemsViewModel有一个构造函数,它接受MenuItemViewModel[](必须是一个数组),那么默认的依赖项解析应该生效,并将自动为您注入MenuItemViewModel的所有命名实例。Genius,…Genius!非常感谢:-)事实上,如果MenuItemsViewModel有一个构造函数,它接受MenuItemViewModel[](必须是一个数组),那么默认依赖项解析应该生效,并将自动为您注入MenuItemViewModel的所有命名实例。Genius,…Genius!非常感谢:-)