2011-08-18 10 views
5

Tengo una acción de clase que tiene una colección de más objetos de acción. Algo como esto:¿Cómo uso la validación con fluidez para validar un objeto que contiene más objetos del mismo tipo?

public class Action 
{ 
    ICollection<Action> SubActions; 
} 

Esto básicamente forma una estructura de árbol (me aseguro de que no haya ciclos). Usé Validación fluida para escribir un validador para esta clase. Aquí está mi intento de validación:

public class ActionValidator : AbstractValidator<Action> 
{ 
    public ActionValidator() 
    { 
     RuleFor(x => x.SubActions).SetCollectionValidator(new ActionValidator()); 
    } 
} 

Unidad explota cuando intento de resolver cualquier cosa que depende de ActionValidator. Más específicamente, LINQPad se bloquea cuando intenta resolver un servicio que depende de ActionValidator, presumiblemente de un desbordamiento de la pila.

Hay otros miembros en mi clase de acción que estoy validando, pero acabo de poner la parte importante para la brevedad. Si comento la regla que he enumerado aquí, funciona bien (excepto que ya no valida las subacciones).

Tengo el problema con mi enfoque. Estoy recursivamente construyendo validadores hasta que algo muere. Pero no estoy seguro de cómo decirle a Validación fluida que valide los subobjetos de esta manera.

Respuesta

9

cambiar la regla que valida el mismo tipo de:

Rulefor(x => x.SubActions).SetCollectionValidator(this); 
+1

Esto me tomó un tiempo muy largo para averiguar. Triste, realmente. – Ross

Cuestiones relacionadas