Ho una Action class che ha una collezione di più oggetti Action. Qualcosa di simile a questo:Come si usa la convalida fluente per convalidare un oggetto che contiene più oggetti dello stesso tipo?
public class Action
{
ICollection<Action> SubActions;
}
Ciò costituisce fondamentalmente una struttura ad albero (faccio che non ci siano cicli). Ho usato Fluent Validation per scrivere un validatore per questa classe. Qui è il mio tentativo Validator:
public class ActionValidator : AbstractValidator<Action>
{
public ActionValidator()
{
RuleFor(x => x.SubActions).SetCollectionValidator(new ActionValidator());
}
}
Unità esplode quando provo a risolvere tutto ciò che dipende da ActionValidator. Nello specifico, LINQPad si arresta in modo anomalo quando tenta di risolvere un servizio che dipende da ActionValidator, presumibilmente da un overflow dello stack.
Ci sono altri membri nella mia classe Action che sto convalidando, ma ho appena messo la parte importante per brevità. Se commento la regola che ho elencato qui, funziona bene (eccetto che non sta più convalidando le sottoazioni).
Ho il problema con il mio approccio. Sto costruendo ricorsivamente i validatori finché qualcosa non muore. Ma non sono sicuro di come comunicare a Fluent Validation di convalidare i sottooggetti in questo modo.
Questo mi ha portato un sacco di tempo per capire. Triste, davvero. – Ross