동일한 인터페이스를 구현하는 두 개의 다른 엔티티에서 CRUD 작업에 사용하려는 단일 컨트롤러가 있습니다. Ninject가 URL에 쿼리 문자열 값 (또는 다른 컨트롤러의 동일한 URL로 라우트 된 다른 URL)을 기반으로 다른 저장소를 제공하고 싶습니다. 이것이 가능한가? 내가 어떻게 해? 일반적으로 디자인 냄새입니다하지만 당신은 다음과 같은 바인딩을 정의 할 수 있습니다Ninject 바인딩은 URL/라우트 값을 기반으로 할 수 있습니까?
4
A
답변
7
:
kernel.Bind<IRepo>().ToMethod(ctx =>
{
var a = HttpContext.Current.Request["a"];
if (a == "b")
{
return new RepoA();
}
return new RepoB();
}).InRequestScope();
0
다음에
kernel.Bind<IRepo>().ToMethod(ctx =>
{
var a = HttpContext.Current.Request.RequestContext.RouteData.Values["RouteDateValue"]
if (a != null)
{
return new RepoA(a);
}
return new RepoB();
})
일종의 유사한 경로에서 특정 값을 얻기 나를 위해 일한 HTTP ://stackoverflow.com/questions/12487200/ninject-injection-based-on-a-route-data-value ... Whadya가 대답을하고 우리는 이것을 vtc라고합니까? (또는 당신이 동의하지 않는 경우, 나는 또한 주석을 제거 할 것입니다) –
이것이 왜 냄새인지 자세히 설명해 주시겠습니까? – JeffreyABecker