c# - 从自定义数据注释属性访问 IConfiguration
问题描述
我目前正在尝试将我公司的开发框架从 .NET 框架 4.7 转换为 .NET 5。
在旧代码中,有一系列从 System.ComponentModel.DataAnnotations.RegularExpressionAttribute 继承的自定义验证属性。
这些都有以下行为
- 检查配置文件中是否指定了正则表达式
- 如果指定了正则表达式,则将其传递给基类
- 如果未指定正则表达式,则将硬编码的正则表达式传递给基类。
如何从 .NET 5 中的数据注释验证属性内部访问配置。
我知道我可以在所有验证属性上创建一个静态配置方法,并在应用程序启动时手动注入 IConfiguration 但这似乎笨拙且不优雅,所以我希望有更好的方法。
我宁愿每次使用属性时都不必将配置文件中的值作为参数传递,因为这在某种程度上违背了我们自定义正则表达式验证属性的要点,并且还增加了某人犯错误并传递不正确的可能性属性中的值。
在 .NET 框架版本中,对配置文件的访问是使用配置管理器完成的。在 .NET 5 中,这并不是一个真正的选择(因为我正试图从 *.config 文件转移到 .NET 核心更灵活的系统)
我已经搜索了如何注入 ASP.Net 核心属性,但我发现的所有结果似乎都与 Actionfilter 和 ServiceFilter 相关,这似乎与 Data Annotation Attributes 没有太大的相关性
解决方案
您可以尝试以下变体:
var config = (IConfiguration)validationContext.GetService(typeof(IConfiguration));
推荐阅读
- javascript - 单击地图后将变量从模板传递到视图
- c# - 使用 Entity Framework Core 进行读写,无需自发更改实体对象
- javascript - 提交按钮不改变问题
- python - 尝试通过 cmd 升级 pip 没有结果
- vue.js - 在 Vue 身份验证后获取用户名并使用户名反应
- excel - 如果范围是 Nothing 退出 sub、userform、specialcells
- serialization - Django rest 框架:有没有办法在使用序列化程序验证数据之前清理数据?
- logstash - Logstash 配置错误,我认为这是一个愚蠢的问题
- c++ - 有没有办法用忍者生成器在cmake中禁用“deps = gcc”的生成?
- jquery - 具有类对象和布尔数据类型的 Jquery ajax 调用