/// <summary> /// Nello stato <see cref="InRientro" /> l'evento <see cref="Revoca" /> produce la /// transizione nello stato <see cref="Libero" />. /// </summary> /// <param name="revoca">Il visitor</param> /// <returns>Lo stato <see cref="Libero" /></returns> public override IStatoMezzo AcceptVisitor(Revoca revoca) { return(new Libero(revoca.Istante)); }
/// <summary> /// Accetta il visitor e scatena l'implementazione di default che consiste nel sollevare /// una <see cref="WorkflowException" />. Gli stati concreti, implementati nelle classi /// derivate, effettuano l'override dei metodi corrispondenti a transizioni di stato /// ammesse, restituendo lo stato corretto a fronte dell'evento (visitor) di ingresso. /// </summary> /// <param name="revoca">Il visitor accettato</param> /// <returns>Niente, poiché solleva un'eccezione</returns> public virtual IStatoMezzo AcceptVisitor(Revoca revoca) { throw new WorkflowException($"Impossibile transire in seguito all'evento {nameof(revoca)}"); }