tnblog
首页
登录

net core过滤器中获取依赖注入对象

64人阅读 2019/7/8 15:20 评论:0 手机 收藏 关注
分类: .NET Core


虽然对象都可以直接实例化得到。但是所有的对象依赖关系,都用DI容器去管理,这样后面想要更换对象的时候也非常方便,项目会比较好管理,对象的依赖关系不会乱套。


注入的方式还是通过构造函数注入:

public class VisitorLogFilter : IActionFilter
    {
        public IVisitorLogDAL _visitorLogDAL;
        //构造函数注入获取依赖对象
        public VisitorLogFilter(IVisitorLogDAL visitorLogDAL)
        {
            _visitorLogDAL = visitorLogDAL;
        }
    }

但是这样写后,由于有了构造函数我们就没法在实例化的时候去直接给他一个对象,我们就可以根据一个类型去注入

services.AddMvc(option =>
{
  option.Filters.Add(typeof(VisitorLogFilter));//全局注册ServiceFilter
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);


局部过滤器中使用,ServiceFilter

上面我们是直接配置到所有请求都要进入的,有些时候我们不想要所有请求都进入过滤器的逻辑,我们某个控制器或者

action进去,我们就可以使用ServiceFilter


首先在ConfigureServices中注入一个ServiceFilter:

//注入一个ServiceFilter
services.AddScoped<VisitorLogFilter>();

在需要使用的地方:

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


贴一个微软官方关于过滤器的文档吧:

https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-2.1#ifilterfactory-implemented-on-your-attribute



评价
关注
自己阳光积极向上,就会吸引阳光积极向上的人和事
文章
6
评论
8
分类
16
关注
16
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}