在这个快速入门示例中,CreateShell()具有
ShellView view = this.Container.TryResolve<ShellView>();
我的问题是如何在不传递viewmodel参数的情况下创建shellview。 Shellview的构造函数定义为
public ShellView(ShellViewModel viewModel)
{
// ...
}
感谢。
答案 0 :(得分:0)
这是依赖注入的全部要点。如果容器无法实例化自身具有依赖关系的对象,则使用它将不太实际。
答案是容器反映在ShellView
上并找到具有最大参数量的构造函数(这里很简单,因为只有一个可供选择)。然后,对于每个参数,它会查找其类型ShellViewModel
,然后递归尝试找出如何实例化参数。
假设在某些时候依赖关系的“树”结束(它找到没有构造函数参数的依赖关系,比如这里的ShellViewModel
),它开始构建依赖关系并最终到达你请求的对象。 / p>
在这个例子中,它看到它可以简单地创建ShellViewModel
(并且这样做),然后用该对象作为参数调用ShellView
构造函数。