"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 ();

Другие вопросы по тегам