ValidationLocalizationOptions.LocalizerProvider 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置用于给定声明类型的控件 IStringLocalizer 的委托。 声明类型是包含要验证的属性的类型,或者 null 当验证管道没有声明类型将消息归因于 (例如顶级最小 API 参数) 时。
public:
property Func<Type ^, Microsoft::Extensions::Localization::IStringLocalizerFactory ^, Microsoft::Extensions::Localization::IStringLocalizer ^> ^ LocalizerProvider { Func<Type ^, Microsoft::Extensions::Localization::IStringLocalizerFactory ^, Microsoft::Extensions::Localization::IStringLocalizer ^> ^ get(); void set(Func<Type ^, Microsoft::Extensions::Localization::IStringLocalizerFactory ^, Microsoft::Extensions::Localization::IStringLocalizer ^> ^ value); };
public Func<Type?,Microsoft.Extensions.Localization.IStringLocalizerFactory,Microsoft.Extensions.Localization.IStringLocalizer>? LocalizerProvider { get; set; }
member this.LocalizerProvider : Func<Type, Microsoft.Extensions.Localization.IStringLocalizerFactory, Microsoft.Extensions.Localization.IStringLocalizer> with get, set
Public Property LocalizerProvider As Func(Of Type, IStringLocalizerFactory, IStringLocalizer)
属性值
注解
使用声明类型调用( null 默认值), Create(Type) 该类型遵循标准资源文件命名约定(例如, Resources/Models.Customer.fr.resx 对于类型 Models.Customer)。 对于无类型调用,无提供程序回退使用 typeof(object)。 在这种情况下,解析的资源源很少有用,因此建议将此委托(或使用 AddValidationLocalization<TResource>())配置为最小 API 参数验证。
options.LocalizerProvider = (type, factory) =>
factory.Create(typeof(SharedValidationMessages));
对于上述共享资源模式,首选专用 AddValidationLocalization<TResource>() 重载,该重载会为你配置 LocalizerProvider (使用一个单实例优化,跳过每次验证调用中重新解析相同的 IStringLocalizer 实例)。
委托必须返回非 null IStringLocalizer。
null返回会导致InvalidOperationException下次验证尝试本地化该声明类型的消息时引发。
缓存: 验证管道不会缓存此委托返回的缓存 IStringLocalizer 。 每次调用ResolveDisplayName(DisplayNameLocalizationContext)ResolveErrorMessage(ErrorMessageLocalizationContext)委托调用一次,因此,如果创建实例成本高昂,则基础IStringLocalizerFactory负责缓存本地化程序实例。 但是,由 AddLocalization() (ResourceManagerStringLocalizerFactory) 注册的默认工厂在内部缓存其结果。 如果委托本身在调用工厂之外执行有意义的工作,请捕获关闭结果,以在呼叫之间摊销该成本。