首先,我正在使用Microsoft的依赖项注入程序包。 (ServiceProvider,ServiceCollection)到目前为止进展顺利,除了这个问题。
我有一些类,可以像这样注册到我的DI上
this.AddSingleton<IAppWorker, AppWorker>();
this.AddSingleton<IAppController, AppController>();
这些类从不访问,但是它们在其构造函数中调用一个方法。我真的需要显式地解析该类,并在构造函数之外调用该方法吗?
或者是否有一种方法可以使其仅初始化一个新实例,并在需要解决该问题时将其存储?我对此很陌生,甚至都很难知道要搜索什么。
为此有一个特殊的名称吗?还是只是不可能。
答案 0 :(得分:2)
您可以在合成根目录中创建实例,然后使用AddSingleton<TService>(IServiceCollection, TService)
重载将其添加到DI容器中。
将
TService
中指定类型的单例服务与在 implementationInstance 中指定的实例添加到指定的IServiceCollection
。
var instance1 = new AppWorker();
services.AddSingleton<IAppWorker>(instance1);
var instance2 = new AppController();
services.AddSingleton<IAppController>(instance2);
答案 1 :(得分:1)
不确定要完成的任务。建议避免向构造函数添加逻辑。最好使用构造函数注入来解析这些实例,并在需要时调用这些方法。
如果您对此不熟悉,我建议“ .NET书中的依赖注入(https://www.manning.com/books/dependency-injection-in-dot-net-second-edition)。