ValidationLocalizationOptions.LocalizerProvider Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia delegata, który kontroluje, który IStringLocalizer jest używany dla danego typu deklaratywnego. Typ deklarowania to typ, który zawiera zweryfikowaną właściwość lub null gdy potok weryfikacji nie ma typu deklaratywnego, aby przypisać komunikat do (np. minimalne parametry interfejsu API najwyższego poziomu).
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)
Wartość właściwości
Uwagi
Gdy null (wartość domyślna) Create(Type) jest wywoływana z typem deklarowania, który jest zgodny ze standardową konwencją nazewnictwa plików zasobów (np. Resources/Models.Customer.fr.resx dla typu Models.Customer). W przypadku wywołań bez deklarowania typu rezerwowego dostawcy używa metody typeof(object). W takim przypadku rozwiązane źródło zasobów jest rzadko przydatne, dlatego skonfigurowanie tego delegata (lub przy użyciu polecenia AddValidationLocalization<TResource>()) jest zalecane w przypadku weryfikacji parametru minimalnego interfejsu API.
options.LocalizerProvider = (type, factory) =>
factory.Create(typeof(SharedValidationMessages));
W przypadku powyższego wzorca współużytkowanego zasobu preferuj dedykowane AddValidationLocalization<TResource>() przeciążenie, które konfiguruje LocalizerProvider dla Ciebie (z optymalizacją pojedynczego wystąpienia, która pomija ponowne rozpoznawanie tego samego IStringLocalizer przy każdym wywołaniu weryfikacji).
Delegat musi zwrócić wartość inną niż null IStringLocalizer. Zwracanie null powoduje InvalidOperationException , że podczas następnej weryfikacji spróbuje zlokalizować komunikat dla tego typu deklarowania.
Buforowanie: potok weryfikacji nie buforuje IStringLocalizer zwracanego przez tego delegata. Delegat jest wywoływany raz na wywołanie metody Microsoft.Extensions.Validation.IValidationLocalizer.ResolveDisplayName(Microsoft.Extensions.Validation.DisplayNameLocalizationContext@) i Microsoft.Extensions.Validation.IValidationLocalizer.ResolveErrorMessage(Microsoft.Extensions.Validation.ErrorMessageLocalizationContext@), dlatego element bazowy IStringLocalizerFactory jest odpowiedzialny za buforowanie wystąpień lokalizatora, jeśli tworzenie wystąpienia jest kosztowne. Jednak domyślna fabryka zarejestrowana przez AddLocalization() (ResourceManagerStringLocalizerFactory) buforuje wyniki wewnętrznie. Jeśli sam delegat wykonuje znaczącą pracę poza wywołaniem fabryki, przechwyć wynik zamknięcia, aby zamortyzować ten koszt między wywołaniami.