我已将 2 个对象实例配置为结构映射
x.ForRequestedType<IStayOnTillAppDies>().TheDefaultIsConcreteType<StayOnTillAppDies>().CacheBy(InstanceScope.Singleton);
x.ForRequestedType<IDiesWhenRequestObjectDies>().TheDefaultIsConcreteType<DiesWhenRequestObjectDies>().CacheBy(InstanceScope.PerRequest);
如您所见,一个是单例/共享范围的对象,而另一个是 PerRequest。
单例对象 StayOnTillAppDies 将保持活动状态,直到应用程序被杀死,而 PerRequest 对象 DiesWhenRequestObjectDies 应该在请求范围死亡时从内存中清除。
我需要在 StayOnTillAppDies 中使用对象 DiesWhenRequestObjectDies,以便使用构造函数注入相应地对其进行注入。
public class StayOnTillAppDies : IStayOnTillAppDies
{
private readonly IDiesWhenRequestObjectDies _diesWhenRequestObjectDies;
public StayOnTillAppDies (IDiesWhenRequestObjectDies diesWhenRequestObjectDies)
{
_diesWhenRequestObjectDies = diesWhenRequestObjectDies;
}
....
....
....
}
_diesWhenRequestObjectDies 仅在 StayOnTillAppDies 中的一两个地方需要,但这里注入的对象永远不会被释放,因为 StayOnTillAppDies 是单例范围的。
我们如何处理这个问题以确保 PerRequest 对象仅在请求的时间段内保留并在以后准备好收集?