c# - .NET Core 3.1 中的链式依赖注入
问题描述
我有以下代码
services.AddSingleton<IFancyService>(new FancyServiceA());
services.AddSingleton<IFancyService>(new FancyServiceB());
services.AddSingleton<IFancyService>(new FancyServiceC());
对于. IFancyService
_ IFancyService
做装饰的代码实际上并不知道实现,它只知道接口。
有没有办法做类似的事情:
services.AddSingleton<IFancyServiceDecorator>(
sp => new FancyServiceDecorator(sp.GetRequiredServices<IFancyService>()));
这将确保有 3 个IFancyServiceDecorator
已注册实例(包装每个 , , 的装饰FancyServiceA
器FancyServiceB
)FancyServiceC
?
我当前的实现依赖于这样的东西,由于单例的多次实例化,我相信这是一种反模式:
var sp = services.BuildServiceProvider();
var fancyServices = sp.GetRequiredService<IFancyService>();
foreach (var fs in fancyServices)
{
services.AddSingleton(new FancyServiceDecorator(fs));
}
提前致谢!
解决方案
推荐阅读
- wordpress - 只有 Wordpress 用户可以看到
- imagemagick - ImageMagick 命令行渐变
- c# - 如何隐藏应用程序视图
- dialogflow-es - 如何针对特定意图进行 Dialogflow 回退
- python - cProfile 在运行多处理 Python 代码时导致酸洗错误
- c# - 替换大 POCO 对象的几个属性的值?
- networking - 使用 Cisco 和 Watchguard 设备诊断 400Mbps 的网络速度上限
- gluon - 如何在 Apache NetBeans 9.0 中安装 Gluon 插件?
- c# - 如何获取 ListBox 中所有选定项目的数组?
- pandas - geopandas 无法正确读取 geojson