'Catel.IoC.IServiceLocator'不包含'Instance'的定义

时间:2014-07-25 12:52:57

标签: c# catel memento

我是.NET开发和Catel的新手,但正在开发一个项目来学习它。目前原始开发者不在场,所以我会在这里试试运气。

要实现Undo / Redo Memento Pattern对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.Core,Catel.MVVM和Catel.Extensions.Controls 3.7。我使用Visual Studio 2013和.NET 4.0。

1 个答案:

答案 0 :(得分:1)

该界面没有 Instance 属性,并且已过时。

你应该用这个:

1)在静态环境中:

Catel.IoC.ServiceLocator.Default

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

var serviceLocator = this.GetServiceLocator();