"Catel.IoC.IServiceLocator" не содержит определения "Экземпляр"
Я довольно новичок в разработке.NET и Catel, но работаю над проектом, чтобы изучить его. На данный момент оригинального разработчика нет, поэтому я попробую здесь удачу.
Для реализации Undo/Redo поддержка шаблонов Memento в 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 ответ
Интерфейс не имеет свойства Instance и является устаревшим.
Вы должны использовать это:
1) В статическом контексте:
Catel.IoC.ServiceLocator.Default
2) В нестатическом контексте (автоматически обрабатывает области видимости):
var serviceLocator = this.GetServiceLocator ();