我是.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。
答案 0 :(得分:1)
该界面没有 Instance 属性,并且已过时。
你应该用这个:
1)在静态环境中:
Catel.IoC.ServiceLocator.Default
2)在非静态上下文中(自动处理范围):
var serviceLocator = this.GetServiceLocator();