我使用:
[OAuthFilter(serviceToInject)]
当我尝试创建新的ActionFilter时,我需要访问其他服务,所以我尝试编写标准构造函数注入,但当我的costructor有参数时,我必须编写类似的东西:
$data['presentss']=explode(',',$data['present']);
我不能这样,因为动作过滤器不能有这种参数。
我该怎么办?动作过滤器不能有注入构造函数?
答案 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>();
}