Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

发现了一个不知道是不是bug的问题,求大佬解答一下! #266

Open
odinsam opened this issue Jul 3, 2021 · 1 comment
Open

Comments

@odinsam
Copy link

odinsam commented Jul 3, 2021

如果我如下使用 特性头的拦截就会无效

public void ConfigureServices(IServiceCollection services)
{
    services.SetServiceProvider();
    services.AddSingleton<FoobarInterceptorAttribute>().ConfigureDynamicProxy();
    services.AddSingleton<Iservice, service>();
    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "demo1", Version = "v1" });
    });
    services.SetServiceProvider();
}
public static class OdinInjectHelper
{
    public static IServiceProvider serviceProvider { get; set; }

    public static T GetService<T>() where T : class
    {
        return serviceProvider.GetRequiredService<T>();
    }

    public static T GetService<T>(this IServiceCollection services) where T : class
    {
        ServiceProvider serviceProvider = services.BuildServiceProvider();
        return serviceProvider.GetRequiredService<T>();
    }

    public static void SetServiceProvider(this IServiceCollection services)
    {
        serviceProvider = services.BuildServiceProvider();
    }
}
[HttpGet]
public IActionResult Get()
{
    this.service = OdinInjectHelper.GetService<Iservice>();
    //下边注释的方法执行 是可以的
    // this.service = this.HttpContext.RequestServices.GetService<Iservice>();
    service.show();
    return Ok();
}

求解答是为什么啊,拜托了!

@liuhaoyang
Copy link
Member

问题出在这里

ServiceProvider serviceProvider = services.BuildServiceProvider();

调用原生的BuildServiceProvider不会构建动态代理类型

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants