ValidationLocalizationOptions.LocalizerProvider Propriedade

Definição

Obtém ou define o delegado que controla o que IStringLocalizer é usado para um determinado tipo de declaração. O tipo de declaração é o tipo que contém a propriedade que está sendo validada ou null quando o pipeline de validação não tem nenhum tipo de declaração para atribuir a mensagem (por exemplo, parâmetros mínimos de API de nível superior).

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 da propriedade

Comentários

Quando null (o padrão), Create(Type) é chamado com o tipo de declaração, que segue a convenção de nomenclatura de arquivo de recurso padrão (por exemplo, Resources/Models.Customer.fr.resx para o tipo Models.Customer). Para declarar invocações sem tipo, o fallback sem provedor usa typeof(object). Nesse caso, a fonte de recurso resolvida raramente é útil, e é por isso que configurar esse delegado (ou usar AddValidationLocalization<TResource>()) é recomendado para validação mínima do parâmetro de API.

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

Para o padrão de recurso compartilhado acima, prefira a sobrecarga dedicada AddValidationLocalization<TResource>() , que configura LocalizerProvider para você (com uma otimização de instância única que ignora a resolução nova IStringLocalizer em todas as chamadas de validação).

O delegado deve retornar um valor não nulo IStringLocalizer. O retorno null faz com que uma InvalidOperationException validação seja gerada na próxima vez que a validação tentar localizar uma mensagem para esse tipo de declaração.

Cache: o pipeline de validação não armazena em cache o IStringLocalizer retornado por esse delegado. O delegado é invocado uma vez por chamada e ResolveDisplayName(DisplayNameLocalizationContext)ResolveErrorMessage(ErrorMessageLocalizationContext), portanto, o subjacente IStringLocalizerFactory é responsável por armazenar em cache instâncias de localizador se a criação de instância for cara. No entanto, a fábrica padrão registrada por AddLocalization() (ResourceManagerStringLocalizerFactory) armazena em cache seus resultados internamente. Se o próprio delegado fizer um trabalho significativo além de chamar a fábrica, capture o resultado em um fechamento para amortizar esse custo entre chamadas.

Aplica-se a