2013-08-05 2 views
0

웹 응용 프로그램에서 HTTP 요청 당 단일 데이터베이스 세션의 범위를 구조적으로 구성했습니다.구조 지정 명시 적으로

For<ISession>() 
    .HybridHttpOrThreadLocalScoped() 
    .Use(context => /* construct the session here */); 

나는 지금 새로운 세션 내가 그것을 구성하는 모든 시간을 필요로하는 다른 클래스가 있습니다. 내가 ObjectFactory.GetInstance<NewClass>()를 호출 할 때, 그것은 새로운 세션마다 얻을 수 있도록

public class NewClass 
{ 
    public NewClass(ISession session) 
    { 
     /* do some stuff with the session */ 
    } 
} 

어떻게 StructureMap를 구성해야합니까? 기본 동작을 그대로 놔두고 모든 다른 클래스에 요청 당 세션을 남겨 둡니다.

답변

1

등록 된 인터페이스는 하나의 수명 만 가질 수 있다는 점에서 StructureMap은 built in limitation입니다. 당신은 ISession에 대한 두 개의 서로 다른 인터페이스를함으로써이 문제를 해결해야합니다 NewClass이 종속성으로 INewSession

interface INewSession : ISession 
소요

conf.For<INewSession>().Use(context => ...); 
conf.For<ISession>().HybridHttpOrThreadLocalScoped().Use(context => ...);