PRISM 4 UICompositionQuickStart问题

时间:2011-03-13 06:35:43

标签: dependency-injection prism

在这个快速入门示例中,CreateShell()具有

ShellView view = this.Container.TryResolve<ShellView>();

我的问题是如何在不传递viewmodel参数的情况下创建shellview。 Shellview的构造函数定义为

public ShellView(ShellViewModel viewModel)
{
    // ...
}

感谢。

1 个答案:

答案 0 :(得分:0)

这是依赖注入的全部要点。如果容器无法实例化自身具有依赖关系的对象,则使用它将不太实际。

答案是容器反映在ShellView上并找到具有最大参数量的构造函数(这里很简单,因为只有一个可供选择)。然后,对于每个参数,它会查找其类型ShellViewModel,然后递归尝试找出如何实例化参数。

假设在某些时候依赖关系的“树”结束(它找到没有构造函数参数的依赖关系,比如这里的ShellViewModel),它开始构建依赖关系并最终到达你请求的对象。 / p>

在这个例子中,它看到它可以简单地创建ShellViewModel(并且这样做),然后用该对象作为参数调用ShellView构造函数。