& # 39; Catel.IoC.IServiceLocator& # 39;不包含'Instance'

本文关键字:Instance 包含 IoC Catel IServiceLocator | 更新日期: 2023-09-27 18:14:54

我对。net开发和Catel很陌生,但正在做一个项目来学习它。目前,原来的开发人员不在场,所以我将在这里碰碰运气。

实现撤销/重做的备忘录模式的支持Catel似乎很好,所以给它一个尝试,但我有问题获得MementoService的实例。当我在ViewModel中这样做时: var mementoService = ServiceLocator.Instance.ResolveType<IMementoService>(); 我得到: 'Catel.IoC.IServiceLocator' does not contain a definition for 'Instance' and no extension method 'Instance' accepting a first argument of type 'Catel.IoC.IServiceLocator' could be found (are you missing a using directive or an assembly reference?)

我注意到,当我在我的模型中做同样的事情时,虽然我没有得到这个问题。似乎很奇怪,我需要不同的方式来获取服务的实例,这取决于我试图获得它的位置。

我不明白我做错了什么。NuGet包管理控制台告诉我,我已经安装了Catel. extensions . memento 3.7和Catel。核心,Catel。MVVM和Catel.Extensions.Controls我使用Visual Studio 2013与。net 4.0。

& # 39; Catel.IoC.IServiceLocator& # 39;不包含'Instance'

接口没有Instance属性,已经过时了。

你应该这样写:

1)在静态上下文中:

Catel.IoC.ServiceLocator.Default

2)在非静态上下文中(自动处理作用域):
var serviceLocator = this.GetServiceLocator();