我已經配置2對象實例成structuremapStructureMap注入Singleton內存作用域的PerRequest對象?
x.ForRequestedType<IStayOnTillAppDies>().TheDefaultIsConcreteType<StayOnTillAppDies>().CacheBy(InstanceScope.Singleton);
x.ForRequestedType<IDiesWhenRequestObjectDies>().TheDefaultIsConcreteType<DiesWhenRequestObjectDies>().CacheBy(InstanceScope.PerRequest);
正如你可以看到一個是單/共享範圍的對象,而另一個是PerRequest。直到同時PerRequest對象DiesWhenRequestObjectDies應該從內存中獲取清除時請求範圍死亡的應用被殺死
Singleton對象StayOnTillAppDies會活下去。
我需要在StayOnTillAppDies中使用對象DiesWhenRequestObjectDies,以便使用構造函數注入相應地注入它。
public class StayOnTillAppDies : IStayOnTillAppDies
{
private readonly IDiesWhenRequestObjectDies _diesWhenRequestObjectDies;
public StayOnTillAppDies (IDiesWhenRequestObjectDies diesWhenRequestObjectDies)
{
_diesWhenRequestObjectDies = diesWhenRequestObjectDies;
}
....
....
....
}
_diesWhenRequestObjectDies只需要在StayOnTillAppDies一個或兩個地方,但這裏注入對象將永遠不會得到釋放,因爲StayOnTillAppDies是辛格爾頓範圍。
我們該如何處理這個問題,以確保PerRequest對象僅在請求的時間段內保留,並在稍後準備好收集?
聽起來不錯。謝謝! – user2385841