Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Fluent验证输出当前记录信息_C#_Fluentvalidation - Fatal编程技术网

C# Fluent验证输出当前记录信息

C# Fluent验证输出当前记录信息,c#,fluentvalidation,C#,Fluentvalidation,好的,我正在对我的一个类使用Fluent验证,我想知道的是。如何确定哪些记录有故障,例如说: 正在被分类为客户可以参考的编号。我如何使用Fluent Validation更改下面的字符串,以将其正在处理的文档编号的当前记录输出给客户 public string DocumentNo { get; set; } 它是否与将其附加到字符串一样简单 代码: public class SupplierTransactionsValidation : AbstractValidator<

好的,我正在对我的一个类使用Fluent验证,我想知道的是。如何确定哪些记录有故障,例如说:

正在被分类为客户可以参考的编号。我如何使用Fluent Validation更改下面的字符串,以将其正在处理的文档编号的当前记录输出给客户

  public string DocumentNo { get; set; } 
它是否与将其附加到字符串一样简单

代码:

  public  class SupplierTransactionsValidation : AbstractValidator<SageStandardImportInvoces>
  { 


     public SupplierTransactionsValidation()
        {
            RuleFor(x => x.AnalysisCode1) // code repeated
                .NotEqual("None").WithMessage("Please enter a value for AnalysisCode1")
                .Length(0, 3);



            RuleFor(x => x.AnalysisCode2) // code repeated
                .NotEqual("None").WithMessage("Please enter a value for AnalysisCode2")
                .Length(0, 3);

            RuleFor(x => x.AnalysisCode3) // code repeated
                .NotEqual("None").WithMessage("Please enter a value for AnalysisCode3")
                .Length(0, 3);


        }
    }
公共类SupplierTransactionValidation:AbstractValidator { 公共供应商TransactionValidation() { RuleFor(x=>x.AnalysisCode1)//代码重复 .NotEqual(“无”)。带有消息(“请为AnalysisCode1输入一个值”) .长度(0,3); RuleFor(x=>x.AnalysisCode2)//代码重复 .NotEqual(“无”)。带有消息(“请为AnalysisCode2输入一个值”) .长度(0,3); RuleFor(x=>x.AnalysisCode3)//代码重复 .NotEqual(“无”)。带有消息(“请为AnalysisCode3输入一个值”) .长度(0,3); } }
如果我正确理解了您的问题,您可以创建一个私有方法,通过将表达式主体强制转换为
成员表达式来获取要验证的属性的名称:

public class SupplierTransactionsValidation : AbstractValidator<SageStandardImportInvoces>
{
    public SupplierTransactionsValidation()
    {
        BuildRule(x => x.AnalysisCode1);
        BuildRule(x => x.AnalysisCode2);
        BuildRule(x => x.AnalysisCode3);
    }

    private IRuleBuilderOptions<SageStandardImportInvoces, string> 
        BuildRule(System.Linq.Expressions.Expression<Func<SageStandardImportInvoces, string>> expression)
    {
        return RuleFor(expression)
            .NotEqual("None")
            .WithMessage($"Please enter a value for {(expression.Body as System.Linq.Expressions.MemberExpression)?.Member.Name}")
            .Length(0, 3);
    }
}
公共类SupplierTransactionValidation:AbstractValidator { 公共供应商TransactionValidation() { BuildRule(x=>x.AnalysisCode1); BuildRule(x=>x.AnalysisCode2); BuildRule(x=>x.AnalysisCode3); } 私有IRuleBuilderOptions BuildRule(System.Linq.Expressions.Expression) { 返回规则(表达式) .NotEqual(“无”) .WithMessage($“请为{(expression.Body作为System.Linq.Expressions.MemberExpression)?.Member.Name}输入一个值”) .长度(0,3); } }
这样,您就不必重复您的逻辑。

如何将“AnalysisCode1-3”属性融入到这张图片中?DocumentNo或分析代码属性是否存在问题?你的问题不清楚。