Language

ValidationLocalizationOptions.LocalizerProvider プロパティ

定義

特定の宣言型に使用する 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)が使用されます。 その場合、解決されたリソース ソースはほとんど役に立ちません。そのため、最小限の API パラメーターの検証には、このデリゲートを構成する (または AddValidationLocalization<TResource>() を使用する) ことをお勧めします。

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

上記の共有リソース パターンでは、専用のAddValidationLocalization<TResource>() オーバーロードを使用します。これは、(検証呼び出しごとに同じLocalizerProviderの再解決をスキップする単一インスタンスの最適化を使用して) IStringLocalizerを構成します。

デリゲートは null 以外の IStringLocalizerを返す必要があります。 nullを返すと、次回検証でその宣言型のメッセージをローカライズしようとしたときに、InvalidOperationExceptionがスローされます。

キャッシュ: 検証パイプラインは、このデリゲートによって返される IStringLocalizer をキャッシュしません。 デリゲートは、 Microsoft.Extensions.Validation.IValidationLocalizer.ResolveDisplayName(Microsoft.Extensions.Validation.DisplayNameLocalizationContext@) と Microsoft.Extensions.Validation.IValidationLocalizer.ResolveErrorMessage(Microsoft.Extensions.Validation.ErrorMessageLocalizationContext@)の呼び出しごとに 1 回呼び出されるため、基になる IStringLocalizerFactory は、インスタンスの作成にコストがかかる場合にローカライザー インスタンスをキャッシュする役割を担います。 ただし、 AddLocalization() (ResourceManagerStringLocalizerFactory) によって登録された既定のファクトリは、その結果を内部的にキャッシュします。 デリゲート自体がファクトリの呼び出し以外に意味のある作業を行う場合は、その結果をキャプチャして、呼び出し全体でそのコストを償却します。

適用対象