使用 Generic 进行 Fluent 验证时出错

问题描述 投票:0回答:1

我正在尝试创建一个通用类来进行流畅的验证。请参考以下代码。

public abstract class GenericValidator<T> : AbstractValidator<T>
{
    /// <summary>
    /// Validates a string property to ensure it is not null, not empty, and meets a minimum length requirement.
    /// </summary>
    /// <param name="propertyValue">The string value to validate.</param>
    /// <param name="propertyName">The name of the property being validated.</param>
    /// <param name="minLength">The minimum length the string must have.</param>
    /// <param name="errorMessage">The error message format.</param>
    /// <returns>Returns a rule builder for further customization.</returns>
    protected IRuleBuilderOptions<T, string> ValidateString(
        Func<T, string> propertyValue,
        string propertyName,
        int minLength = 0,
        string errorMessage = "{PropertyName} is invalid.")
    {
        return *RuleFor*(propertyValue)
            .NotNull().WithMessage($"{propertyName} cannot be null.")
            .NotEmpty().WithMessage($"{propertyName} cannot be empty.")
            .MinimumLength(minLength).WithMessage($"{propertyName} must be at least {minLength} characters long.")
            .WithMessage(errorMessage);
    }
}

我收到错误

“CS0411 无法从用法中推断出方法 'AbstractValidator.RuleFor(Expression>)' 的类型参数。尝试为“RuleFor”方法显式指定类型参数。

我对通用药物的了解有限。我尝试解决同样的问题但无法解决。 任何输入都会有帮助。为此,我使用版本 11* 的 Fluent 验证包。

需要采取什么措施来解决该错误?

c# generics fluentvalidation
1个回答
0
投票

正如错误消息所示:尝试为“RuleFor”显式指定类型参数。

return RuleFor<string>(propertyValue)
    ...
© www.soinside.com 2019 - 2024. All rights reserved.