如何使用工厂方法的返回值在启动类中添加单例

mik*_*ike 2 c# asp.net-core

我正在尝试在我的启动类 Singleton 中使用 DI add。基于我想processorStringName它来自的appSettings和工厂类添加适当的处理器?有可能以一种很好的方式做到这一点吗?

 IProcessor processor = ProcessorFactory.CreateProcessor(Configuration, processorStringName);
 services.AddSingleton<IProcessor, processor>();
Run Code Online (Sandbox Code Playgroud)

Dai*_*Dai 5

services.AddSingleton<IProcessor, processor>();
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为processor是变量名,而不是类型名。

请查看 的重载AddSingleton。

你想要这个:

services.AddSingleton<IProcessor>( implementationInstance: processor );
Run Code Online (Sandbox Code Playgroud)

或这个:

services.AddSingleton<IProcessor>( implementationFactory: sp => processor );
Run Code Online (Sandbox Code Playgroud)