C# 从ViewModel中的IoCContainer获取对象实例

C# 从ViewModel中的IoCContainer获取对象实例,c#,mvvm,inversion-of-control,ioc-container,C#,Mvvm,Inversion Of Control,Ioc Container,我是一名学习MVVM的学生,正在开发WPF应用程序。 当我必须从ViewModel_1实例化ViewModel_2时,问题就出现了。ViewModel_2依赖于在IoC容器中注册的XService。 因此,当我要求容器解析ViewModel_2时,它会创建所需的服务,将其注入构造函数,并提供ViewModel 我的问题是:我一直在读到,容器不应该被任何类引用,而应该被管理其生命周期的引导程序引用,那么谁给了ViewModel_2和ViewModel_1呢 我能想到的唯一解决方案是在ViewMod

我是一名学习MVVM的学生,正在开发WPF应用程序。 当我必须从ViewModel_1实例化ViewModel_2时,问题就出现了。ViewModel_2依赖于在IoC容器中注册的XService。 因此,当我要求容器解析ViewModel_2时,它会创建所需的服务,将其注入构造函数,并提供ViewModel

我的问题是:我一直在读到,容器不应该被任何类引用,而应该被管理其生命周期的引导程序引用,那么谁给了ViewModel_2和ViewModel_1呢

我能想到的唯一解决方案是在ViewModel_1的ctor中放置一个Lazy,并在需要时访问它,但是如果我要从那里管理多个VM呢

我希望你能帮助我。
非常感谢,新年快乐

据我所知,您有
ViewModel_1
包含属性
ViewModel_2
。您需要用DI注入这个
ViewModel_2
。在这个简单的例子中,您可以在
ViewModel_1
的构造函数中插入
ViewModel_2

你应该给我们更多关于“如果我有一个以上的虚拟机从那里管理”的细节。
你是什么意思?“那里”在哪里?如果您发布
ViewModel_1
ViewModel_2
的代码,将有助于了解您的问题。

谢谢Kirill的回复。VM2不一定是VM1的属性,而只是在VM1中创建并由其用于执行某些操作的VM。我想知道,如果我在VM1中创建的不仅仅是VM2,我是否有义务为每个额外的VM添加一个ctor参数,或者是否有更简单的解决方案?再次感谢。很抱歉,“您可以在ViewModel_1的控制器中插入ViewModel_2”是什么意思?*构造函数。它的拼写错误一般来说,如果需要注入一些独立的依赖项,那么应该将它们全部添加到构造函数参数中。在某些特殊情况下,当依赖项相互链接时,可能会有其他解决方案适用于这种情况。我想知道,在相同情况下,当人们处理比我大得多的项目时,需要调用更多的ViewModels,他们的行为如何=(