2013-08-05 39 views
0

在我的web應用程序中,我配置了StructureMap來爲每個HTTP請求的單個數據庫會話範圍。明確指定StructureMap壽命

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

我現在有需要我每次構造它的時間全新會議另一個類。

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

如何配置StructureMap這樣,當我打電話ObjectFactory.GetInstance<NewClass>(),它每次都會得到一個新的會話?我想保持默認行爲不變,以便我的所有其他類都爲每個請求留下一個會話。

回答

1

StructureMap有一個built in limitation因爲註冊的接口只能有一個生命週期。您需要解決此通過具有兩個不同的接口,用於ISession

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

其中NewClass需要INewSession作爲依賴和

interface INewSession : ISession