特性的依赖注入
1. 特性是编译时确定的
2. 特性构造函数只能传递常量,不能传递变量
修改上一章的例子
1.全局注册
修改 CustomExceptionFilterAttribute.cs 添加 依赖注入日志

生成编译 -> 浏览 /filter/index 就直接能生成log文件了,打开log文件看到捕获到的异常


控制器又如何使用
2. ServiceFilter
先注释之前的全局捕获,然后注册 CustomExceptionFilterAttribute 特性

然后修改 FilterController.cs

生成编译 -> 浏览 /filter/index 就直接能生成log文件了,打开log文件看到捕获到的异常(和第一步的一样操作)
3. TypeFilter
TypeFilter 和 ServiceFilter 一样用就可以测试了
4. IFilterFactory 自定义特性
创建一个特性类 CustomFilterFactoryAttribute.cs ,实现 IFilterFactory 方法

修改 FilterController.cs 的特性

生成编译 -> 浏览 /filter/index 就直接能生成log文件了,打开log文件看到捕获到的异常(和第一步的一样操作)
总结
ServiceFilter IFilterFactory TypeFilter 这三个都是基于 FilterFactory
ServiceFilter 和 IFilterFactory 基本一样
TypeFilter 可以构造参数
Filter:MVC流程,流程外处理不了(404)
中间件:任何请求最外层到达,提前做些筛选过滤工作(控制器 和 action 处理不了),不是和业务逻辑
autofac:可以深入到业务逻辑层做扩展 ,依赖注入的方法IA和IA的特性一起使用
网友评论