Asp.net core Dotnetcore装饰程序没有被调用?
我的项目在DotnetCore3.1中,我正在使用Scrutor工具为decorator注入依赖关系。我的结构如下:Asp.net core Dotnetcore装饰程序没有被调用?,asp.net-core,.net-core,dependency-injection,asp.net-core-webapi,decorator,Asp.net Core,.net Core,Dependency Injection,Asp.net Core Webapi,Decorator,我的项目在DotnetCore3.1中,我正在使用Scrutor工具为decorator注入依赖关系。我的结构如下: internal interface IProvider { Task<Response> Get() } internal sealed class Provider : IProvider { public async Task<Response> Get() { Console.writeline("
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");
}
}
内部接口IProvider
{
任务Get()
}
内部密封类提供程序:IProvider
{
公共异步任务Get()
{
Console.writeline(“一些东西”);
}
}
内部静态类提供扩展
{
公共静态任务Get(此IProvider提供程序)
{
provider.Get()
}
}
内部密封类提供程序装饰程序:IProvider
{
私有只读IProvider\u内部;
ProviderDecorator(IProvider内部){
_内部=内部;
}
公共异步任务Get()
{
Console.writeline(“一些东西”);
writeline(“一些东西”+“其他东西”);
}
}
Startup.cs上的依赖项注入:
services.AddSingleton<IProvider, Provider>();
services.Decorate<IProvider, ProviderDecorator>();
services.AddSingleton();
服务。装饰();
使i供应商
公开
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 { }
公共接口IProvider
{
任务Get();
}
内部密封类提供程序:IProvider
{
公共异步任务Get()
{
Console.WriteLine(“一些东西”);
返回新的响应();
}
}
内部静态类提供扩展
{
公共静态任务Get(此IProvider提供程序)
{
返回provider.Get();
}
}
内部密封类提供程序装饰程序:IProvider
{
私有只读IProvider\u内部;
公共提供者装饰者(IProvider内部)
{
_内部=内部;
}
公共异步任务Get()
{
Console.WriteLine(“一些东西”);
WriteLine(“一些东西”+“其他东西”);
返回新的响应();
}
}
公共类响应{}
使i供应商
公开
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 { }
公共接口IProvider
{
任务Get();
}
内部密封类提供程序:IProvider
{
公共异步任务Get()
{
Console.WriteLine(“一些东西”);
返回新的响应();
}
}
内部静态类提供扩展
{
公共静态任务Get(此IProvider提供程序)
{
返回provider.Get();
}
}
内部密封类提供程序装饰程序:IProvider
{
私有只读IProvider\u内部;
公共提供者装饰者(IProvider内部)
{
_内部=内部;
}
公共异步任务Get()
{
Console.WriteLine(“一些东西”);
WriteLine(“一些东西”+“其他东西”);
返回新的响应();
}
}
公共类响应{}