netCore中 在过滤器中注入属性(依赖注入)
1.第一种情况就是简单给过滤器注入属性
我们想要创建一个Filter Attribute并需要依赖注入的话一般想要的代码为:
public class FilterClass : ActionFilterAttribute { public IDependency1 Dependency1 { get; set; } public IDependency2 Dependency2 { get; set; } public FilterClass(IDependency1 dependency1, IDependency2 dependency2) { // ...use dependencies } }
Startup类的ConfigureServices中注册服务:
services.AddScoped<FilterClass>();
在需要标记的控制器上使用ServiceFilter
[ServiceFilter(typeof(FilterClass))] public class TextController : Controller { }
2.还有一种情况就是需要给过滤器注入属性并传递普通参数
public class FilterClass : ActionFilterAttribute { public IDependency1 Dependency1 { get; set; } public IDependency2 Dependency2 { get; set; } private string _name; private string _value public FilterClass(IDependency1 dependency1, IDependency2 dependency2,string name=null,string value=null) { Dependency1 =dependency1; Dependency2 =dependency2; _name=name; _value=value } }
在控制器中使用TypeFilter(不需要在Startup中注册服务)
//不传递参数 [TypeFilter(typeof(FilterClass))] public class TextController : Controller { } //传递一个参数,此时name=age [TypeFilter(typeof(FilterClass),Arguments = new object[] {"age" })] public class TextController : Controller { }
//传递两个参数,此时name=age,value=18
[TypeFilter(typeof(FilterClass),Arguments = new object[] {"age","18" })] public class TextController : Controller { }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)