如何在ASP.Net Core MVC的IValidatableObject.Validate方法中正确本地化验证

Gwi*_*inn 7 c# asp.net asp.net-core-mvc asp.net-core

我有一个实现IValidatableObject的模型,我需要本地化ValidationResults,我该如何正确实现呢?

目前我想出了一个IValidatableObject.Validate方法,如下所示:

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
    var stringLocalizer = validationContext.GetService(typeof(IStringLocalizer<MyModel>)) as IStringLocalizer<MyModel>;

    //Validation logic implementation...

    yield return new ValidationResult(stringLocalizer["This thing is the error message"]);
}
Run Code Online (Sandbox Code Playgroud)

我在这里做的是使用ValidationContext.GetService方法定位IStringLocalizer实例.

这种方法有效,但我的主要问题是我不完全确定这是正确的,特别是因为我需要依赖服务定位器来获取IStringLocalizer