[英]How can i extend Depedency Injection in an Action filter?
在startup
我已经设置了我的动作过滤器。
services.AddScoped<CheckThisAttribute>();
动作过滤器本身是
public class CheckThisAttribute : ActionFilterAttribute
{
private readonly Context Db;
private readonly string Name;
public CheckThisAttribute(Context context, string name = "")
{
Db = context;
Name = name;
}
}
并通过 controller 消耗
[ServiceFilter(typeof(CheckThisAttribute))]
public class MyController : Controller
{
}
您可能已经注意到,我已将构造函数中的name
参数设置为可选。 如果我不这样做,我会得到运行时错误。 (上下文通过 DI 传递,但名称不传递)
我可以扩展这个动作过滤器,所以我也可以从我的 controller 中传递name
吗? 就像是
[ServiceFilter(typeof(CheckThisAttribute(name="Something")))]
您无法使用ServiceFilterAttribute
实现该结果。
而是尝试TypeFilterAttribute
,它看起来像这样:
[TypeFilter(typeof(CheckThisAttribute),
Arguments = new object[] { "Method 'Hi' called" })]
这是文档的链接: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-3.1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.