【问题标题】:Dotnetcore Decorator is not getting called?Dotnetcore 装饰器没有被调用?
【发布时间】:2020-06-13 15:19:16
【问题描述】:

我的项目在 dotnet 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>();

【问题讨论】:

    标签: asp.net-core .net-core dependency-injection asp.net-core-webapi decorator


    【解决方案1】:

    公开IProvider

    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 { }
    

    【讨论】:

      猜你喜欢
      • 2015-07-19
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 2016-02-05
      • 1970-01-01
      • 2021-09-10
      相关资源
      最近更新 更多