动作过滤器 - 依赖注入

时间:2017-02-21 10:49:58

标签: c# .net dependency-injection asp.net-core action-filter

我使用:

[OAuthFilter(serviceToInject)]

当我尝试创建新的ActionFilter时,我需要访问其他服务,所以我尝试编写标准构造函数注入,但当我的costructor有参数时,我必须编写类似的东西:

  $data['presentss']=explode(',',$data['present']);

我不能这样,因为动作过滤器不能有这种参数。

我该怎么办?动作过滤器不能有注入构造函数?

1 个答案:

答案 0 :(得分:1)

您可以使用TypeFilterAttribute

[TypeFilter(typeof(OAuthFilter))]
public class HomeController : Controller
{
}

这将实例化您的过滤器并通过依赖注入获取任何所需的组件。另一种选择是ServiceFilterAttribute

[ServiceFilter(typeof(OAuthFilter))]
public class HomeController : Controller
{
}

但这需要您将过滤器添加到服务集合中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<OAuthFilter>();
}