注入服务或单元测试验证属性ASP.NET Core



如何将服务注入到我的自定义验证属性中?如果这不可能,那么另一种选择是设置ValidationContext来解析我的测试中的服务。

我该如何实现这些目标?

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var dateOfBirth = (DateTime)value;
var currentDate = DateTime.UtcNow;
var minimumAge = new DateTime(currentDate.Year - 17, currentDate.Month, currentDate.Day, currentDate.Hour, currentDate.Minute, currentDate.Second);
var maximumAge = new DateTime(currentDate.Year - 34, currentDate.Month, currentDate.Day, currentDate.Hour, currentDate.Minute, currentDate.Second);
var isTooYoung = dateOfBirth > minimumAge;
var isTooOld = dateOfBirth < maximumAge;
if (isTooYoung || isTooOld) 
{
// it is about this line
var localizer = (ILocalizer)validationContext.GetService(typeof(ILocalizer));
var error = localizer.GetString(ErrorMessageString);
return new ValidationResult(error);
} 
return ValidationResult.Success;
}

谢谢你的帮助。

您可以参考这篇文章,它告诉您如何注入服务&将数据转换为验证属性:

https://rossjayjones.github.io/dotnetcore/aspnetcore/mvc/dotnet/2018/09/09/injecting-services-into-validation-attributes-aspnetcore.html

最新更新