2013-03-19 3 views
0

방금 ​​FluentValidation을 사용하기 시작했으며이 게시물을 따라 세계화 된 값인 http://fluentvalidation.codeplex.com/discussions/394471을 사용할 수있게되었습니다.FluentValidation with Autofac

그러나 우리는 기존의 세계화 값을 래핑하는 번역 서비스 인터페이스에 대한 참조를 얻는 방법에 주력하고 있습니다. 이것은 DependencyResolver를 사용할 수 없기 때문에 ASP.NET MVC에 직접 연결되지 않은 별도의 프로젝트에 포함되어 있습니다.

변환 된 값을 가져 오는 데 사용할 TranslationServiceStringSource 클래스에 인터페이스 또는 autofac 컨테이너를 가져올 수있는 방법을 알고있는 사람이 있습니까? (global.asax.cs) 당신이 어딘가에 컨테이너에 해당 참조를 저장하는 경우

var container = builder.Build(); 
var resolver = new AutofacDependencyResolver(container); 
DependencyResolver.SetResolver(resolver); 

, 나는 종종 MvcApplication 클래스에 대한 참조를 만들 :

답변

0

어디 선가과 유사한 몇 가지 코드가 있다고 가정

그런 다음
public static IContainer Container { get; set; } 

을 수행 할 수 있습니다

public TranslationServiceStringSource(string text) { 
    _text = text; 
    _translator = new MvcApplication.Container.Resolve<ITranslationService>(); 
} 

이 번역을 얻을 좋을 것이다하지만 AutoFac에서 관리 할 ServiceStringSource입니다.

+0

컨테이너에서 직접 해결 한 경우 인스턴스는 컨테이너 길이만큼 지속됩니다 (응용 프로그램의 수명이 다 된 것 같습니다) –

+0

결국 우리는 Autofac에서 관리하는 IValidationsService를 만들었습니다. 생성자의 번역 서비스 MvcApplication에서 정적 참조를 가질 수 없었습니다. 이는 별도의 프로젝트에 포함되어 있으며 BusinessService 객체에 확장 메서드를 사용하여 번역을 추가 할 때 TranslationServiceStringSource를 관리하는 것이 까다로울 수 있습니다. 하지만, Autofac이 관리하는 TranslationServiceStringSource를 얻으려는 시도가 가장 좋은 방법이라고 생각하거나 최소한 내가 볼 수있는 유일한 방법이되었습니다. 많은 도움에 감사드립니다. – user351711