依赖注入 – 如何创建过期的单例绑定?
发布时间:2020-05-23 00:25:46 所属栏目:程序设计 来源:互联网
导读:如何为一个全局范围的单例对象创建绑定,该对象的实例在一定时间后过期?一旦对象过期,我希望Ninject能够在该实例到期之前提供新的实例,等等…… 伪绑定以获得想法: BindFoo().ToSelf() .InSingletonScope() .WithExpiration(someTimeSpan); 我不是在寻找那种
|
如何为一个全局范围的单例对象创建绑定,该对象的实例在一定时间后过期?一旦对象过期,我希望Ninject能够在该实例到期之前提供新的实例,等等…… 伪绑定以获得想法: Bind<Foo>().ToSelf()
.InSingletonScope()
.WithExpiration(someTimeSpan);
我不是在寻找那种确切的语法,而是一种最终获得所需结果的方法.本质上,它就像使用Ninject作为滑动应用缓存一样. 更新 var someTimeInFuture = DateTime.Now.AddSeconds(10);
var fooScopeObject = new object();
Func<IContext,object> scopeCall = ctx =>
{
if (someTimeInFuture < DateTime.Now)
{
someTimeInFuture = DateTime.Now.AddSeconds(10);
fooScopeObject = new object();
}
return fooScopeObject;
};
Kernel.Bind<Foo>()
.ToSelf()
.InScope(scopeCall);
您实质上是定义一个定时范围.您可以使用自定义范围函数进行绑定,并在一段时间后返回null.
var someTimeInFuture = DateTime.Now.AddMinutes(5); Func<IContext,object> scopeCall = ctx => DateTime.Now > someTimeInFuture ? null : someTimeInFuture; Kernel.Bind<Foo>().ToSelf().InScope(scopeCall); 我现在无法对此进行测试,但这可能有效. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
