[ASP.NET Core]ASP.NET Core应用程序开发中如何实现控制器中操作过滤属性的依赖注入?

ASP.NET Core 作者: Rector 116 次阅读 · 读完约需 2 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在ASP.NET MVC的应用程序开发中,操作过滤属性是经常被使用到的。我们可以在操作过滤属性中拦截并处理当前操作的逻辑。

比如需要实现一个用户是否登录的操作过滤属性,它继承自ActionFilterAttribute,代码类似如下:

控制器中的调用示例代码:

启动类Startup.cs配置如下:

在ASP.NET Core应用程序开发中,我们应该如何向操作过滤属性中注入我们需要的服务实例呢?

方案一

由于过滤器作为ServiceType使用的,所以过滤器也需要注入到IoC的容器中。

Startup.cs

控制器使用ServiceFilter属性,如下:

方案二

使用全局过滤器(Global Filters)实现,只需要实现接口IFilterFactory即可,如下:

之后,我们需要在启动类Startup.cs文件中添加一个全局的过滤器,如下:

方案三

我们还可以通过请求上下文来获取需要的服务实现实例,如下:

启动类Startup.cs配置依赖注入如下:

这样,便可不用通过构造器注入所依赖的接口。

阅读了该文章的人还浏览了...

本文永久链接码友网 » [ASP.NET Core]ASP.NET Core应用程序开发中如何实现控制器中操作过滤属性的依赖注入?

发布于: 2018-10-29 09:26:50
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册