我正在重写一个使用MVVMLight的项目,该项目使用Microsoft的ServiceLocation作为Prism应用程序的容器。
这是我尝试在视图模型中重写的以下代码。
var class = ServiceLocator.Current.GetInstance<IClass>();
我知道这就是您使用Prism解决界面的方式。
var class = (iClass)containerRegistry.GetContainer().Resolve< iClass >();
我的问题是,如果您无权访问容器,如何使用接口解析viewModel中的接口?
答案 0 :(得分:1)
在IContainerRegistry中的RegisterTypes中有一个名为Register的属性,您只需在其中注册您的接口和类即可。
containerRegistry.Register<IYourClass, YourClass>();
要获得视图模型的访问权限,必须将接口添加为参数
protected IYourClass _yourClass;
public LoginPageViewModel(IYourClass yourClass)
{
_yourClass = yourClass;
}