Blazor Wasm 和带有本地化的 FluentValidation

问题描述 投票:0回答:1
c# localization blazor-webassembly fluentvalidation
1个回答
0
投票
  1. new()
    约束中删除无参数构造函数
    TValidator
    的约束。

  2. 从 DI 获得

    IStringLocalizer<ErrorResource>
    服务。

  3. Activator.CreateInstance()
    创建
    TValidator
    实例并提供
    Loc
    作为参数。

public class FluentValidator<TValidator> : ComponentBase
    where TValidator : IValidator
{
    private readonly static char[] separators = new[] { '.', '[' };
    private TValidator? validator;

    [CascadingParameter] private EditContext? EditContext { get; set; }

    [Inject]
    IStringLocalizer<ErrorResource> Loc { get; set; }

    protected override void OnInitialized()
    {
        if (EditContext != null)
        {
            validator = (TValidator)Activator.CreateInstance(typeof(TValidator), new object[] { Loc });

            ...
        }
    }

    ...
}

演示

© www.soinside.com 2019 - 2024. All rights reserved.