ValidationLocalizationOptions.LocalizerProvider Propriedade

Definição

Obtém ou define o delegado que controla qual IStringLocalizer é usado para um dado tipo de declaração. O tipo declarante é o tipo que contém a propriedade a validar, ou null quando o pipeline de validação não tem um tipo declarador a que atribuir a mensagem (por exemplo, parâmetros mínimos de API de topo).

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)

Valor de Propriedade

Observações

Quando null (o padrão), Create(Type) é chamado com o tipo declarante, que segue a convenção padrão de nomenclatura de ficheiros de recursos (por exemplo, Resources/Models.Customer.fr.resx para o tipo Models.Customer). Para invocações sem tipo declarante, o fallback sem fornecedor usa typeof(object). Nesse caso, a fonte de recurso resolvida raramente é útil, razão pela qual se recomenda configurar este delegado (ou usar AddValidationLocalization<TResource>()) para validação de parâmetros mínimos da API.

options.LocalizerProvider = (type, factory) =>
    factory.Create(typeof(SharedValidationMessages));

Para o padrão de recursos partilhados acima, prefira a sobrecarga dedicada AddValidationLocalization<TResource>() , que se LocalizerProvider configura para si (com uma otimização de instância única que evita a resolução repetitiva IStringLocalizer em cada chamada de validação).

O delegado deve devolver um não-nulo IStringLocalizer. Returnar null faz com que an InvalidOperationException seja lançado na próxima vez que a validação tenta localizar uma mensagem para esse tipo de declaração.

Cache: o pipeline de validação não armazena em cache o IStringLocalizer retorno deste delegado. O delegado é invocado uma vez por chamada para ResolveDisplayName(DisplayNameLocalizationContext) e ResolveErrorMessage(ErrorMessageLocalizationContext), pelo que o subjacente IStringLocalizerFactory é responsável por armazenar em cache as instâncias do localizador se a criação de instâncias for dispendiosa. No entanto, a fábrica padrão registada por AddLocalization() (ResourceManagerStringLocalizerFactory) armazena os seus resultados internamente. Se o seu delegado fizer um trabalho significativo para além de ligar para a fábrica, capture o resultado num encerramento para amortizar esse custo entre chamadas.

Aplica-se a