Sono coinvolto nello sviluppo di un sistema di gestione dei prezzi. Ho una serie di oggetti business come Auto, Motore, Ruote, ecc Voglio convalidarli utilizzando il framework Validazione fluida
Ecco un esempio:
public class Car
{
public int? Id { get; set; }
public string Name { get; set; }
}
Vorrei integrare la convalida, ma in modo disaccoppiato. Ho pensato di usare il pattern Decorator ma forse qualcuno ha un'idea migliore.
public class CarValidable
{
public Car car{get;private set;}
public CarValidable(Car car)
{
this.car=car;
}
public bool IsValid
{
get
{
var validator = new CarValidator();
return validator.Validate(car).IsValid;
}
}
class CarValidator : AbstractValidator<Car>
{
public CSOAeroClassValidator()
{
RuleFor(x => x.Name).NotEmpty();
}
}
}
Forse la creazione di un decoratore generico sarà più adatta al mio scopo (disaccoppiamento)
public class BusinessObjectValidable<T,AbsValid>
where AbsValid : AbstractValidator<T>, new()
{
public T BusinesObject{get;private set;}
public BusinessObjectValidable(T businessObject,)
{
this.BusinesObject=bobject;
}
public bool IsValid
{
get
{
var validator= Activator.CreateInstance(typeof(AbsValid));
return Validator.Validate(BusinesObject).IsValid;
}
}
}
Qualche suggerimento? È la mia prima volta che uso convalida fluente e sono sicuro che otterrai alcune idee su come integrarlo in modo corretto.
Grazie mille