如何从视图模型访问 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;
}
我正在重写一个使用 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;
}