Questa volta Ughetto ha colpito nel segno.
Sfruttando le “fluent interfaces” e i tricks per costruirle ho ridotto lo scope di un paio di metodi di Ensure che potevano portare a comportamenti fuorvianti.
Adesso il metodo Named( … ) compare solo se non avete ancora chiamato nessun metodo che invochi la validazione in modo da evitare che sia possibile attribuire un nome al parametro che state validando dopo che una validazione è già stata eseguita, in questo modo c’è la certezza che ogni exception che possa venire sollevata contiene il nome del parametro incriminato.
All’inizio il metodo è disponibile:
image
mentre dopo la prima validazione non lo è più:
image
Al prossimo giro ci sarà anche la possibilità di agganciare un’infratruttura di log che verrà invocata prima della generazione di ogni exception.
Purtroppo c’è anche una breaking change, è cambiata la firma di un metodo:
da: ThenThrow( Func exceptionBuilder )
a:   ThenThrow( Func, Exception> exceptionBuilder )

.m