【发布时间】:2019-11-15 12:35:39
【问题描述】:
我在我的启动中将服务添加到 IServiceCollection 作为 Scoped:
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IEmailService, EmailService>();
}
如果我要在我的 EmailService 实现中添加一个静态属性,这是否意味着即使我的 EmailService 在我的请求结束后超出范围,我的属性也不会被垃圾收集并保留在内存中?
我正在查看一些具有包含不记名令牌的静态属性的代码。似乎这个令牌一旦设置就会保留在内存中并一直存在,直到我的 AppPool 一天后刷新。
【问题讨论】:
-
就像 Jon Skeet 所说的那样,静态成员与实例无关,它们与类型相关。
-
您可以拥有一个单例服务来保存您的重要配置值(或机密)并将其注入您的作用域服务中。没有理由使用依赖注入/控制反转的静态字段或属性(containers9
-
谢谢,我不这么认为。我将遵循您的方法。谢谢曾。
标签: c# asp.net-core dependency-injection static