Validazione fluida: integra le best practice dei miei oggetti di business

0

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

    
posta Badulake 17.07.2018 - 09:00
fonte

0 risposte

Leggi altre domande sui tag