데스크탑 응용 프로그램과 웹 응용 프로그램에서 모두 사용할 라이브러리가 있습니다.Ninject 참조되지 않은 구성 요소의 바인딩 범위를 지정하십시오.
이 라이브러리에는 데스크톱에서 싱글 톤으로 바인딩되어야하며 웹에서 요청 범위에 있어야하는 외부 데이터 액세스 구성 요소에 대한 참조가 있습니다.
- 데스크탑 프로젝트 참조 핵심 프로젝트
- 웹 프로젝트 참조
- 핵심 프로젝트 참조 내가 웹 클라이언트에서이 작업을 수행하도록 강요하고있어
오늘 ExternalComponent 핵심 프로젝트 :
Bind<ExternalComponent.IDataAccessComponent>()
.To<ExternalComponent.DataAccessComponent()
.InRequestScope()
.WithConstructorArgument(...);
데스크톱 클라이언트에서 동일하지만 내 InSingletonScope()
이 내 w를 강제합니다. eb 및 데스크톱 애플 리케이션 내 의도가 아닌 ExternalComponent.dll을 참조하십시오.
클라이언트가이 데이터 액세스 구성 요소를 참조하지 않고도이 외부 구성 요소를 사용해야하는 범위를 클라이언트 (웹 또는 데스크톱)에서 지정할 수 있도록 바인딩을 어떻게 만들 수 있습니까?
클라이언트가 필요로하는 범위를받는 핵심 프로젝트의 일부 메소드를 생각해 보았지만 Ninject API에서 찾을 수없는 것을 찾았습니다. 이 필요한 이유
왜 그 참조가 문제입니까? 결국 핵심 프로젝트에 필요하기 때문에 ExternalComponent 어셈블리가 두 응용 프로그램의 기본 경로에 있는지 확인해야합니다. –
불필요한 참조를 피하고 싶습니다. ExternalComponent는 Core에서만 사용되며 ninject 바인딩 구성을 제외하고는 클라이언트에서 참조 할 수있는 유스 케이스가 없습니다. –
전체 바인딩 구문은 일반적인 것입니다. 제네릭 형식 T는 Bind 메서드로 정의됩니다. bind 메소드를 사용하는 System.Type을 사용하거나 객체 바인딩을 사용하는 경우에만 원하는 것을 얻을 수 있습니다. 답으로 모범을 버리 겠어. –