非静态字段需要使用FluentValidation返回对象验证类



我正在尝试将FluentValidator添加到我的.net core 3.1 Worker Service中。我创建了一个类,它将保存我的CSV解析文件。

public partial class Subjects
{
public Guid SubjectId { get; set; }
public string Code { get; set; }
public Guid OrganizationId { get; set; }
public string PreferredName { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public DateTime? DateOfBirth { get; set; }
public string Gender { get; set; }
public string LastNameInitial { get; set; }
public string CodeDisplay { get; set; }
public Guid? RaceId { get; set; }
public Guid? MaritalStatusId { get; set; }
public Guid? StatusId { get; set; }
public string Rank { get; set; }
public string Email { get; set; }
public string MobilePhone { get; set; }
public bool MobilePhoneDoNotLeaveMsg { get; set; }
public bool MobilePhoneDoNotText { get; set; }
public string WorkPhone { get; set; }
public bool WorkPhoneDoNotLeaveMsg { get; set; }
}

然后根据文档,我创建了实现AbstractValidator接口的Validation类:

class SubjectsValidation : AbstractValidator<Subjects>
{
public SubjectsValidation()
{
RuleFor(subject => Subjects.FirstName).NotEmpty();
}
}

根据文档,我需要在构造函数中添加规则。然而,当我传入规则的lambda时,我得到了以下错误:

"非静态字段、方法或属性";

所以我修改了构造函数,如下所示:

class SubjectsValidation : AbstractValidator<Subjects>
{
public SubjectsValidation()
{
Subjects subject = new Subjects();
RuleFor(x=>subject.FirstName).NotEmpty();
}
}

哪个得到了错误,但当我试图调用验证时,当我实例化要测试的对象时,我得到了一个错误:

Subjects subject = new Subjects();
subject.FirstName = "John";
SubjectsValidation validator = SubjectsValidation();

这会返回一条失败的消息,因为我必须在主题验证中创建一个新主题,所以它会返回一个失败消息。所以按照网站上的说明,我就是无法让它发挥作用。我该如何解决这个问题?

RuleFor方法需要一个委托。因此,如果您在主体中使用委托的参数(subject而不是Subjects(,则您的第一次尝试将起作用:

class SubjectsValidation : AbstractValidator<Subjects> 
{ 
public SubjectsValidation()
{ 
RuleFor(subject => subject.FirstName).NotEmpty(); 
} 
}

最新更新