मैं निम्नलिखित वर्ग हैFluentValidation कॉल नियम-सेट और आम नियम
public class ValidProjectHeader : AbstractValidator<Projects.ProjectHeader>
{
public ValidProjectHeader()
{
RuleFor(x => x.LobId).Must(ValidateLOBIDExists);
RuleFor(x => x.CreatedByUserId).NotEmpty();
RuleFor(x => x.ProjectManagerId).NotEmpty();
RuleFor(x => x.ProjectName).NotEmpty();
RuleFor(x => x.SalesRepId).NotEmpty();
RuleFor(x => x.DeliveryDate).NotEmpty();
RuleFor(x => x.ProjectStatusId).NotEmpty();
RuleFor(x => x.DeptartmentId).NotEmpty();
RuleFor(x => x.CustomerId).NotEmpty();
RuleSet("Insert",() =>
{
RuleFor(x => x.ProjectLines).Must(ValidateProjectLines).SetCollectionValidator(new ValidProjectLine());
});
RuleSet("Update",() =>
{
RuleFor(x => x.ProjectLines).SetCollectionValidator(new ValidProjectLine());
});
}
और मुझे क्या करना कोशिश कर रहा हूँ rulset साथ मान्यता कहते हैं, लेकिन मैं भी "आम" नियम वापस जाने के लिए जब मैं फोन चाहते हैं नियमसेट के साथ सत्यापन।
कोड मैं मान्यता फोन करने के लिए है के रूप में इस प्रकार है
public abstract class BaseValidator
{
private List<ValidationFailure> _errors;
public bool IsValid { get; protected set; }
public List<ValidationFailure> Errors
{
get { return _errors; }
protected set { _errors = value; }
}
public virtual bool CallValidation()
{
Errors = new List<ValidationFailure>();
ValidatorAttribute val = this.GetType().GetCustomAttributes(typeof(ValidatorAttribute), true)[0] as ValidatorAttribute;
IValidator validator = Activator.CreateInstance(val.ValidatorType) as IValidator;
FluentValidation.Results.ValidationResult result = validator.Validate(this);
IsValid = result.IsValid;
Errors = result.Errors.ToList();
return result.IsValid;
}
public virtual bool CallValidation(string ruleSet)
{
Errors = new List<ValidationFailure>();
ValidatorAttribute val = this.GetType().GetCustomAttributes(typeof(ValidatorAttribute), true)[0] as ValidatorAttribute;
IValidator validator = Activator.CreateInstance(val.ValidatorType) as IValidator;
FluentValidation.Results.ValidationResult result = validator.Validate(new FluentValidation.ValidationContext(this, new PropertyChain(), new RulesetValidatorSelector(ruleSet)));
IsValid = result.IsValid;
Errors = result.Errors.ToList();
return result.IsValid;
}
public BaseValidator()
{
Errors = new List<ValidationFailure>();
}
}
मैं सदस्य ruleSet
साथ विधि CallValidation
कॉल कर सकते हैं, लेकिन यह बुला नहीं है भी "आम" नियम है।
मुझे पता है कि मैं इन नियमों को चलाने के लिए "सामान्य" नियमसेट बना सकता हूं लेकिन उस स्थिति में मुझे हमेशा सामान्य नियमसेट के साथ सत्यापन करना होगा।
क्या कोई तरीका है कि मैं नियमसेट को कॉल कर सकता हूं और सामान्य नियम भी कह सकता हूं।
यह विकल्प कम से कम 200 9 से गिट स्रोत कोड में मौजूद प्रतीत नहीं होता है, जो मुझे दस्तावेज गलत होने के बाद यहां ले गया है। – john
महान सलाह! FluentValidation 6.2.1 में RuleSet तर्क केस अलग है: "नियम:" के बजाय "नियमसेट:"। उदाहरण: validator.Validate (obj, ruleSet: "डिफ़ॉल्ट, सम्मिलित करें"); –