繁体   English   中英

如何在操作过滤器中扩展依赖注入?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM