c# - .NET Core 添加/注册一个类作为自身到服务集合

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

我正在尝试将一个类作为 self 添加到容器中。

但是,由于该类在构造函数中需要一些依赖项,因此它会提示语法错误。

services.TryAddSingleton<TimeoutPolicyHolder>(new TimeoutPolicyHolder());

如何将这个类添加为自己?

在 AutoFac 中同样是:

builder.RegisterType<FooService>().AsSelf();

我该如何解决这个问题?

最佳答案

您可以使用通用扩展将服务本身添加到服务集合中。

services.AddSingleton<TimeoutPolicyHolder>();

或可用的重载之一。

容器将负责初始化服务并注入(inject)任何依赖项。

如果你想手动创建实例,你可以使用工厂委托(delegate)

services.TryAddSingleton<TimeoutPolicyHolder>(sp => 
    new TimeoutPolicyHolder(sp.GetService<Dependency1>(),...)
);

它将在被调用时访问服务提供者,以便可以解决任何需要解决的依赖关系。

关于c# - .NET Core 添加/注册一个类作为自身到服务集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50688209/

相关文章:

c# - 错误处理 : try-catch or returning an error code?

.net - 想在Core Project中放一个4.6目录

.net - Kestrel MaxRequestBodySize 上传文件超限

c# - 为什么即使未注册 IOptions 也会得到解决

c# - Sharepoint 自定义字段

C# 泛型约束问题

c# - 从 JSON 文件创建 C# 类

c# - 身份不工作,无法访问身份数据

java - 静态方法是 DI 反模式吗?

javascript - 当构造函数有参数时 Angular 2 中的依赖注入(inject)