【问题标题】:Converting lightInject to .netcore DI将 lightInject 转换为 .netcore DI
【发布时间】:2019-08-09 09:08:11
【问题描述】:
我正在将一些 lightInject 代码转换为 .netcore DI
在 .netcore DI 中,我们有用于注册服务的 AddSingleton 和 AddTransient 函数。
在 lightInject 中,我有 RegisterMethod。所以我只想知道当我们调用时,Register 方法是只注册单例还是多个。
【问题讨论】:
-
从docs 开始不是更容易吗?它说 LightInject 中的默认行为是将所有对象视为 transients,除非另有说明。
标签:
c#
dependency-injection
light-inject
【解决方案1】:
基于documentation 除非另有说明,否则 LightInject 中的默认行为是将所有对象视为瞬态。因此,在 .Net Core 中,您需要将服务注册为 transient。
关于生命周期的一点点:
瞬态
每次从服务容器请求它们时,都会创建瞬态生命周期服务 (AddTransient)。这个生命周期最适合轻量级、无状态的服务。
作用域
每个客户端请求(连接)创建一次范围生命周期服务 (AddScoped)。
单例
单例生命周期服务 (AddSingleton) 在第一次被请求时创建(或者在 Startup.ConfigureServices 运行并使用服务注册指定实例时)。每个后续请求都使用相同的实例。
这是一个link 到 .Net Core 依赖注入的文档。