当前位置 : 主页 > 手机开发 > 其它 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-22
使用Microsoft.Extensions.DependencyInjection作为容器时,如何注册装饰器类? 当按以下方式注册我的类型时(类似于Castle Windsor),我得到一个“System.InvalidOperationException:检测到循环依赖关系”错误
使用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.

网友评论