将LightInject代码转换为Dotnetcore DI

时间:2019-08-12 07:12:26

标签: c# asp.net-core dependency-injection

我必须创建一个具有按需控制的对象来刷新它。

我在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

是否可能

1 个答案:

答案 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容器,您可以在SomeCacheSingletonTransient之间进行选择。您可以找到概述here