asp.net-core - 自定义 DataAnnotations 本地化 - 仅创建单例对象
问题描述
我以Askmethat-Aspnet-JsonLocalizer为例,为 IStringLocalizer 和 Factory 创建了基于 JSON 的自定义本地化提供程序,
我还实现了数据标注本地化。并本地化验证消息。
现在,目前的要求是我可以在不重新启动应用程序的情况下更新基于 Json 的语言文件,这也是通过将 IStringLocalizer 作为瞬态服务注入。
但是我观察到的是,一旦为 DataAnnotation 加载了 LocalizedStrings,它就不会在我更新 Json 时更新它没有反映 DataAnnotation 验证消息但是如果我使用 IStringLocalizer。
DataAnnotation StringLocalizer 是否可能是单例?
我已经使用下面的代码来实现 DataAnnotationLocalization 进入启动
services.AddMvcCore()
.AddDataAnnotations()
.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
factory.Create(string.Empty, string.Empty);
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
在这里,工厂实现作为瞬态服务注入。
有什么我错过了,还是 DataAnnotation 本地化是单例对象?
解决方案
我有完全相同的问题,您找到解决方案了吗?
我相信你是对的
DataAnnotation 本地化是单例对象
因为即使在我的情况下,如果工厂在特定文化中创建本地化器,相同的本地化器将用于未来访问,即使您更改了文化或工厂创建了新的本地化器(我猜这也可能导致内存泄漏)
推荐阅读
- ffmpeg - ffmpeg在连接视频时复制音频编解码器类型
- xml - 用于零售商定价的 Google 表格导入 XML
- ios - 类型不匹配(Swift.Dictionary
, - html - 当缩小窗口大小时,如果可能的话,我需要使用媒体查询在页面上填充文本以提高可读性
- bash - 从 shell 脚本的输出中捕获和存储一个值,同时还显示进度?
- spring - Spring和Neo4j数据库:无法验证用户
- symfony - symfony 5.2 即使安装了 libcurl,如何强制使用 amphp 客户端
- onclick - 我想让它一旦触发“selectAll”功能,所有的复选框都会被选中
- c# - 您如何从 Dictionary 值之一中找到所需的日期?
- python-3.x - Graphviz 左对齐边缘标签文本