2014-07-25 6 views
0

저는 .NET 개발과 Catel에 익숙하지만 프로젝트를 배우고 있습니다. 지금 당장은 원래 개발자가 없으므로 여기서 대신 행운을 시험해 보겠습니다.'Catel.IoC.IServiceLocator'에 'Instance'에 대한 정의가 없습니다.

실행 취소/다시 실행을 구현하려면 Catel의 Memento Pattern 지원이 멋지게 보이므로 시도해보아야하지만 MementoService의 인스턴스를 가져 오는 데 문제가 있습니다. 내 뷰 모델에서 수행 할 때 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 Package Manager Console은 Catel.Extensions.Memento 3.7뿐만 아니라 Catel.Core, Catel.MVVM 및 Catel.Extensions.Controls를 설치했음을 알려줍니다. .NET 4.0에서 Visual Studio 2013을 사용하고 있습니다.

+0

나는 Catel에 대해 아무 것도 모른다. 그러나 그것이 작동하는 클래스에 들어가면, 당신이'Instance'에서 F12를 눌렀을 때 어디에서 가져 왔을 까? 아마 그것은 확장 메소드이고'using '만 빠져 있습니다. – Vache

+0

그것은 Catel.IoC의 일부이며 도움이되지 않은을 내 ViewModel에 추가했습니다. 도움이되지 못했지만 제안에 감사드립니다. –

답변

1

인터페이스에는 인스턴스 속성이 없으며 더 이상 사용되지 않습니다. 정적 맥락에서

1) :

당신이 사용해야

Catel.IoC.ServiceLocator.Default

2) 비 정적 맥락에서() 범위를 자동 처리한다 :

var serviceLocator = this.GetServiceLocator();

+0

감사! 설명서에이 내용이 포함되어 있으면 좋을 것입니다. –

+0

문서화되었지만 문서에 약간 깊이가 있습니다 : https://catelproject.atlassian.net/wiki/display/CTL/Introduction+to+DependencyResolver+and+DependencyResolverManager –

+0

난 단지 Memento 문서 https ://catelproject.atlassian.net/wiki/display/CTL/Memento+and+collections 컬렉션에 대해 실행 취소/다시 실행 기능을 추가 한 이후입니다. 예제 코드에서는 GetServiceLocator() 메서드를 사용하지 않으며 표시되는 것처럼 사용되지 않는 Instance 속성도 나열합니다. –