我正在尝试将一个类作为 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/