2016-07-13 6 views
0

약간의 배경 : 내가 SimpleInjector을 선택 DI로 사용하는 AspnetCore 응용 프로그램에 FluentValidation을 통합하기 시작했습니다. ASPNET 워드 프로세서AspnetCore에 IServiceCollection과 함께 제 3 자 컨테이너를 등록하는 것이 잘못입니까?

에 따르면는 "ConfigureServices 방법은 일반적으로 무효 반환하지만 그 서명 IServiceProvider, 구성 할 수있는 다른 컨테이너를 반환하도록 변경 및 반환되는 경우"

이 모두 잘 내가 광산이 아닌 서비스를 구성 할 필요가 있다는 것을 알기 전까지는 좋은 일이었습니다. 따라서이 예제에서는 containerBuilder.Populate(services);을 사용합니다. FluentValidation에 대한 좋은 점은 내 유효성 검사기를 해결하기 위해 내 IValidatorFactory을 만들 수 있다는 것입니다. 내 유효성 검사기가 SimpleInjector에 등록 되었기 때문에 내 문제가 발생한 곳이 아닌데, 기본 컨테이너가없는 것으로 생각했습니다. 나는이 두통을 해결하기 위해 방법으로 컨테이너를 반환하는 대신 containerIServiceCollection에 등록하고 IValidatorFactoryIServiceProvider으로 삽입하여이 두통을 해결할 수 있다고 생각했습니다. 해킹처럼 작동하는 것처럼 보이지만 갈 길이 멀어? aspnet 문서 위키 외에 다른 방법이 있습니까?

참조 : https://github.com/JeremySkinner/FluentValidation/blob/master/src/FluentValidation.AspNetCore/ServiceProviderValidatorFactory.cs

https://docs.asp.net/en/latest/fundamentals/dependency-injection.html

답변

0

간단한 인젝터와 ASP.NET 코어 DI 추상화 사이의 근본적인 호환성 (즉 해결할 수없는 호환성)과 추상화 많은 problems in general이있다 그 Microsoft는 제안했다. 닷넷 코어 DI 추상화를위한 자체 개발 또는 제 3 자 제공 어댑터를 사용하는

자제 :이 때문에 our official advice

는이다. 프레임 워크 및 타사 구성 요소에서 응용 프로그램 구성 요소의 등록을 분리합니다. SOLID 작업 방식을 추구하고 프레임 워크 및 타사 구성 요소와의 비 호환성을 염려하지 않고 Simple Injector에서 응용 프로그램 등록을 확인하고 진단 할 수 있습니다.

here 타사 컨테이너를 사용할 때 ASP.NET Core를 사용하는 방법은 자세하게 읽을 수 있습니다.

+0

문제에 대한 기술적 인 견해보다는 정치적 입장을 취하는 것이 실망 스럽습니다. 당신은 항상 독창적 인 소프트웨어를 만들었지 만 당신이 승인하지 않은 인기있는 일을하기위한 도구를 우리에게 항상주었습니다. 이것은 일을하는 전통적인 방식에서 벗어난 것처럼 보입니다. 솔직히 말해서 매우 실망 스럽습니다. 덕분에 –

+0

. 요즘 필자는'SimpleInjector'를 내 프로젝트에 가져 왔고 필요할 경우 코드 용 어댑터를 만들었습니다. 나는 제 3 자 부품을 놓친 것 같아요! –

+0

@ErikFunkenbusch 시간을내어 참조 자료를 자세히 읽고 해당 기사에서 링크 된 자료를 읽어보십시오. 그 후에 이것이 정치적 입장이 아니라 사실 기술적 인 것임을 알게 될 것입니다. Simple Injector는 Microsoft가 제안한 것처럼 Comforming Container의 세계에 기술적 인 이유로 적합하지 않습니다. – Steven