首页 > 解决方案 > 自定义 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 本地化是单例对象?

标签: asp.net-core.net-corelocalizationasp.net-core-mvc

解决方案


我有完全相同的问题,您找到解决方案了吗?

我相信你是对的

DataAnnotation 本地化是单例对象

因为即使在我的情况下,如果工厂在特定文化中创建本地化器,相同的本地化器将用于未来访问,即使您更改了文化或工厂创建了新的本地化器(我猜这也可能导致内存泄漏)


推荐阅读