我有一个银行/集合,可以将对象实例缓存在内存中,以便每个请求不需要返回数据存储区。我希望Autofac提供此银行的实例,但在x秒后使其过期,以便在下一个请求时创建新的实例。我很难理解如何设置LifetimeScope来实现这一点。我已经阅读了这篇文章几次。银行对象并不是真正受到工作单元的约束。它理想地位于所有工作单元“上方”,在其中和跨其中缓存对象。
我目前正在使用下面的方法,但它并没有像我希望的那样工作。请问有人能指点我正确的方向吗?
非常感谢您的提前帮助。
我目前正在使用下面的方法,但它并没有像我希望的那样工作。请问有人能指点我正确的方向吗?
....
builder.Register(c =>
{
return new ORMapBank(c.Resolve<IORMapRoot>());
}).InstancePerMatchingLifetimeScope(ExpireTimeTag.Tag());
IContainer container = builder.Build();
var TimedCache= RootScope.BeginLifetimeScope(ExpireTimeTag.Tag());
DependencyResolver.SetResolver(new AutofacDependencyResolver(TimedCache));
....
public static class ExpireTimeTag
{
static DateTime d = DateTime.Now;
static Object tag = new Object();
public static object Tag()
{
if (d.AddSeconds(10) < DateTime.Now)
{
CreateTag();
return tag;
}
private static void CreateTag()
{
tag = new Object();
}
}
非常感谢您的提前帮助。