Ho una domanda riguardante l'applicazione di una regola aziendale tramite un modello di specifica. Si consideri il seguente esempio:Guida all'implementazione del modello di specifiche
public class Parent
{
private ICollection<Child> children;
public ReadOnlyCollection Children { get; }
public void AddChild(Child child)
{
child.Parent = this;
children.Add(child);
}
}
public class Child
{
internal Parent Parent
{
get;
set;
}
public DateTime ValidFrom;
public DateTime ValidTo;
public Child()
{
}
}
regola L'azienda dovrebbe far rispettare che non ci può essere un bambino nella collezione che periodo di validità si interseca con un altro.
Per questo vorrei implementare una specifica che verrà poi utilizzata per generare un'eccezione se viene aggiunto un figlio non valido E anche per controllare se la regola verrà violata PRIMA di aggiungere il bambino.
come:
public class ChildValiditySpecification
{
bool IsSatisfiedBy(Child child)
{
return child.Parent.Children.Where(<validityIntersectsCondition here>).Count > 0;
}
}
Ma in questo esempio, il bambino accede al genitore. E a me non sembra corretto. Quel genitore potrebbe non esistere quando il bambino non è stato ancora aggiunto al genitore. Come lo implementeresti?
Questa può essere una possibilità. Ma mi sto solo chiedendo se sto usando questo modello nel modo giusto ... La validità non sarebbe unica se non ci fosse un genitore? – Chris