c# - .NET Core 将一个类作为 self 添加/注册到服务集合
问题描述
我正在尝试将一个类作为 self 添加到容器中。
但是,由于该类在构造函数中需要一些依赖项,因此它会抱怨语法错误。
services.TryAddSingleton<TimeoutPolicyHolder>(new TimeoutPolicyHolder());
如何将此类添加为自我?
在 AutoFac 中相同的是:
builder.RegisterType<FooService>().AsSelf();
我该如何解决这个问题?
解决方案
您可以使用通用扩展将服务本身添加到服务集合中。
services.AddSingleton<TimeoutPolicyHolder>();
或可用的重载之一。
容器将负责初始化服务并注入任何依赖项。
如果要手动创建实例,可以使用工厂委托
services.TryAddSingleton<TimeoutPolicyHolder>(sp =>
new TimeoutPolicyHolder(sp.GetService<Dependency1>(),...)
);
调用时它将有权访问服务提供者,以便可以解决任何需要解决的依赖关系。
推荐阅读
- python - Python 和 VS 代码问题
- xcode - 如何使用 SystemC 修复 Xcode 中的永久 EXC_BAD_ACCESS 异常?
- matlab - 使用 imagesc 和固定轴映射
- php - 如何在 HTML 电子邮件中调用 PHP 函数
- macos - 为什么 Xcode 与 Target 成员不匹配?
- shell - socat:是否可以将接收到的消息在服务器端(unix 域套接字)传递给函数?
- angularjs - 如何获取动态添加指令的元素值
- java - Android Gradle 中的版本依赖冲突
- flutter - Flutter 1.5 - 有没有办法更新资产文件夹中的文件?
- aws-lambda - 如何引用 SAM 模板中定义的角色?