Мой проект в do tnet core 3.1, и я использую инструмент Scrutor, чтобы внедрить зависимость для декоратора. У меня есть следующая структура:
internal interface IProvider
{
Task<Response> Get()
}
internal sealed class Provider : IProvider
{
public async Task<Response> Get()
{
Console.writeline("Some stuff");
}
}
internal static class ProvideExtensions
{
public static Task<Response[]> Get(this IProvider provider)
{
provider.Get()
}
}
internal sealed class ProviderDecorator : IProvider
{
private readonly IProvider _inner;
ProviderDecorator(IProvider inner){
_inner = inner;
}
public async Task<Response> Get()
{
Console.writeline("Some stuff");
Console.writeline("Some stuff" + "other stuff");
}
}
Внедрение зависимостей на Startup.cs:
services.AddSingleton<IProvider, Provider>();
services.Decorate<IProvider, ProviderDecorator>();