ValidationLocalizationOptions.LocalizerProvider Propiedad

Definición

Obtiene o establece el delegado que controla que IStringLocalizer se usa para un tipo declarado determinado. El tipo declarante es el tipo que contiene la propiedad que se está validando o null cuando la canalización de validación no tiene ningún tipo declarante para atribuir el mensaje a (por ejemplo, parámetros de LA API mínima de nivel 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 de propiedad

Comentarios

Cuando null (valor predeterminado), Create(Type) se llama con el tipo declarante, que sigue la convención de nomenclatura de archivos de recursos estándar (por ejemplo, Resources/Models.Customer.fr.resx para el tipo Models.Customer). Para declarar invocaciones sin tipo, la reserva sin proveedor usa typeof(object). En ese caso, el origen de recursos resuelto rara vez es útil, por lo que se recomienda configurar este delegado (o usar AddValidationLocalization<TResource>()) para la validación mínima de parámetros de API.

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

Para el patrón de recursos compartidos anterior, prefiere la sobrecarga dedicada AddValidationLocalization<TResource>() , que se LocalizerProvider configura automáticamente (con una optimización de instancia única que omite volver a resolver lo mismo IStringLocalizer en cada llamada de validación).

El delegado debe devolver un valor distinto de NULL IStringLocalizer. Devolver null hace que se produzca una InvalidOperationException excepción la próxima vez que la validación intente localizar un mensaje para ese tipo declarativo.

Almacenamiento en caché: la canalización de validación no almacena en caché el IStringLocalizer devuelto por este delegado. El delegado se invoca una vez por llamada a ResolveDisplayName(DisplayNameLocalizationContext) y ResolveErrorMessage(ErrorMessageLocalizationContext), por lo que el subyacente IStringLocalizerFactory es responsable de almacenar en caché las instancias del localizador si la creación de instancias es costosa. Sin embargo, el generador predeterminado registrado por AddLocalization() (ResourceManagerStringLocalizerFactory) almacena en caché sus resultados internamente. Si el propio delegado realiza un trabajo significativo más allá de llamar a la factoría, capture el resultado en un cierre para amortizar ese costo en las llamadas.

Se aplica a