0

我对 .NET 开发和 Catel 还很陌生,但正在研究一个项目来学习它。目前原始开发人员不在场,所以我会在这里试试运气。

要实现撤消/重做,Catel 的 Memento 模式支持似乎很棒,所以尝试一下,但我在获取 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.Core、Catel.MVVM 和 Catel.Extensions.Controls 3.7。我正在使用带有 .NET 4.0 的 Visual Studio 2013。

4

1 回答 1

1

该接口没有Instance属性,并且已过时。

你应该使用这个:

1)在静态上下文中:

Catel.IoC.ServiceLocator.Default

2)在非静态上下文中(自动处理范围):

var serviceLocator = this.GetServiceLocator();

于 2014-07-27T09:00:28.927 回答