Sto utilizzando Fluent Validation nel mio progetto.
Nel mio ViewModel ho una proprietà che è di tipo stringa, i valori validi sono solo stringa che rappresenta numeri interi positivi.
Quindi, ho creato un semplice IntegerValidator
che controlla se la stringa può essere analizzata o meno in un numero intero. Questo funziona.
problema è, come per aggiungere la regola che deve essere un numero intero positivo? Vorrei usare lo esistente Greater Than Validator, ma concatenarlo alla regola per la mia proprietà stringa lo paragonerei come string
, non come analizzato int
. Come ottenere questo?Concatenamento di regole che dipendono l'una dall'altra
Esempio di quello che vorrei fare (notare che il ToInt()
):
RuleFor(x => x.BatchNumber).SetValidator(new IntegerValidator())
.ToInt().GreaterThan(0);
Questo fa davvero senso! Tuttavia, mi chiedo quale dovrebbe essere il ruolo di ToInt. Come la vedo io, dovrebbe convertire una '' RuleBuilder in un '' RuleBuilder e fare in modo che il valore convalidato viene convertito in 'int' in fase di validazione. Ma ... la catena del metodo dovrebbe restituire un 'RuleBuilder '. Destra? Quindi, ci deve essere un modo per istruire consecutivi 'regole int' (come' GreaterThan') per fare una validazione 'int', ma restituire un' rulebuilder STRING'. Temo che questo sia al di là delle attuali capacità di FluentValidation. –
@GertArnold: Beh, il 'ToInt' non ha molto senso, penso. In realtà non mi interessa * come * funzionerà, solo * che * posso usare 'GreaterThan' e che un int è passato a' GreaterThan'. –
Ok, il mio punto principale è che nella mentalità corrente di Fluent Validation potrebbe essere un problema concettuale. –