依赖注入 – 如何使用Microsoft.Extensions.DependencyInjection注册装饰器?

前端之家收集整理的这篇文章主要介绍了依赖注入 – 如何使用Microsoft.Extensions.DependencyInjection注册装饰器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Microsoft.Extensions.DependencyInjection作为容器时,如何注册装饰器类?

当按以下方式注册我的类型时(类似于Castle Windsor),我得到一个“System.InvalidOperationException:检测到循环依赖关系”错误,解决了IMyService类型:

services.AddSingleton<IMyService,MyService>();
services.AddSingleton<IMyService,MyServiceDecorator>();

装饰器注册似乎不支持开箱即用,但有没有办法添加支持解决问题?

解决方法

使用 Scrutor项目以下列方式注册似乎可以让装饰器正确解析:

services.AddSingleton<IMyService,MyService>();
services.Decorate<IMyService,MyServiceDecorator>();

Decorate是名称空间中的扩展方法:Scrutor项目中的Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions.

猜你在找的设计模式相关文章