如何使用 Microsoft.Extensions.DependencyInjection 注册装饰器?

How can I register a decorator using Microsoft.Extensions.DependencyInjection?

如何在使用 Microsoft.Extensions.DependencyInjection 作为容器时注册装饰器 class?

当以下列方式(类似于温莎城堡)注册我的类型时,我在解析 IMyService 类型时遇到 "System.InvalidOperationException : A circular dependency was detected" 错误:

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

装饰器注册似乎不受开箱即用的支持,但有什么方法可以添加支持或解决问题吗?

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

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

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