自定义DataAnnotations本地化-仅创建Singleton对象

时间:2019-03-15 12:26:17

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

我以Askmethat-Aspnet-JsonLocalizer为例,为IStringLocalizer和Factory创建了基于自定义JSON的本地化提供程序,

我还实现了数据注释本地化。并本地化验证消息。

现在,当前的要求是我可以在不重新启动应用程序的情况下更新基于Json的语言文件,也可以通过将IStringLocalizer作为临时服务注入。

但是我观察到的是,一旦为DataAnnotation加载了LocalizedStrings,当我更新Json时,它就不会更新,这并不能反映出DataAnnotation验证消息,但这是我是否使用IStringLocalizer。

DataAnnotation StringLocalizer是否有可能是Singleton?

我已经使用下面的代码实现了DataAnnotationLocalization到启动

services.AddMvcCore()
              .AddDataAnnotations()
              .AddDataAnnotationsLocalization(options =>
              {
                options.DataAnnotationLocalizerProvider = (type, factory) =>
                  factory.Create(string.Empty, string.Empty);
              }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

在这里,工厂实施作为临时服务被注入。

有什么我错过的东西吗?还是DataAnnotation本地化是Singleton Object?

1 个答案:

答案 0 :(得分:0)

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

我相信您是正确的

DataAnnotation本地化是单例对象

因为就我而言,即使工厂更改了特定文化的本地化程序,即使您更改了文化或工厂创建了新的本地化程序,相同的本地化程序也将用于将来的访问(这也可能导致内存泄漏)