您可以在基类中将属性设为虚拟:
public class Entity
{
public int Id { get; set; }
public virtual string Title { get; set; }
}
然后在子类中覆盖它,使其成为必需并指定您希望显示的错误消息:
public class City : Entity
{
public int Population { get; set; }
[Required(ErrorMessage = "Please name your city")]
public override string Title
{
get { return base.Title; }
set { base.Title = value; }
}
}
或者,您可以使用FluentValidation.NET
而不是数据注释来定义验证逻辑,在这种情况下,您可以为不同的具体类型使用不同的验证器。例如:
public class CityValidator: AbstractValidator<City>
{
public CityValidator()
{
this
.RuleFor(x => x.Title)
.NotEmpty()
.WithMessage("Please name your city");
}
}
public class CarValidator: AbstractValidator<Car>
{
public CityValidator()
{
this
.RuleFor(x => x.Title)
.NotEmpty()
.WithMessage("You should specify a name for your car");
}
}
...