Dotnetcore Decorator не вызывается? - PullRequest
1 голос
/ 01 марта 2020

Мой проект в 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>();

1 Ответ

0 голосов
/ 08 марта 2020

Марка IProvider Publi c

public interface IProvider
{
    Task<Response> Get();
}
internal sealed class Provider : IProvider
{
    public async Task<Response> Get()
    {
        Console.WriteLine("Some stuff");
        return new Response();
    }
}
internal static class ProvideExtensions
{
    public static Task<Response> Get(this IProvider provider)
    {
        return provider.Get();
    }
}
internal sealed class ProviderDecorator : IProvider
{
    private readonly IProvider _inner;

    public ProviderDecorator(IProvider inner)
    {
        _inner = inner;
    }

    public async Task<Response> Get()
    {
        Console.WriteLine("Some stuff");
        Console.WriteLine("Some stuff" + "other stuff");

        return new Response();
    }

}
public class Response { }
...