如何从视图模型访问 Prism.ioc 容器?

How to access Prism.ioc container from a view model?

我正在重写一个使用 MVVMLight 的项目,该项目使用 Microsoft 的 ServiceLocation 作为 Prism 应用程序的容器。

这是我试图在我的视图模型中重写的以下代码。

var class = ServiceLocator.Current.GetInstance<IClass>();

我知道这就是您使用 Prism 解析接口的方式。

var class = (iClass)containerRegistry.GetContainer().Resolve< iClass >();

我的问题是,如果您无权访问容器,如何使用接口解析 viewModel 中的接口?

在 RegisterTypes 重写的 IContainerRegistry 中有一个名为 Register 的 属性 你只需要在那里注册你的接口和你的 class

containerRegistry.Register<IYourClass, YourClass>();

要访问您的视图模型,您必须将接口添加为参数

protected IYourClass _yourClass;
public LoginPageViewModel(IYourClass yourClass)
{
    _yourClass = yourClass;

}