我必须创建一个具有按需控制的对象来刷新它。
我在LightInject中有代码
public Lifetime()
{
lifetimes = new List<Flushable>();
}
public Lifetime Create()
{
var lifetime = new Flushable();
lifetimes.Add(lifetime);
return lifetime;
}
public void Flush()
{
foreach (var lifetime in lifetimes)
{
lifetime.Flush();
}
}
和在DI代码中
var life = new Lifetime();
container.RegisterInstance<ILifetime>(life);
container.Register<SomeCache>(life.Create());
我想将以上代码移至.net core DI
.netcore Di
是否可能答案 0 :(得分:1)
是的,有可能!
list.stream().map(s -> s.replaceAll("\n",",").trim()).collect(Collectors.toList());
您可能要调整var services = new ServiceCollection();
services.AddSingleton<ILifetime, Lifetime>();
services.AddSingleton<SomeCache>(sp => {
var lifetime = sp.GetRequiredService<ILifetime>();
return lifetime.Create();
}); // or what ever scope u need
var serviceProvider = services.BuildServiceProvider();
var cache = serviceProvider.GetRequiredService<SomeCache>();
的范围。使用MS-DI容器,您可以在SomeCache
,Singleton
或Transient
之间进行选择。您可以找到概述here。