/// <summary> /// Esegue la coda di eventi. Attenzione! eccezioni non gestite interrompono la coda di esecuzione /// </summary> /// <typeparam name="T"></typeparam> /// <param name="evt"></param> /// <param name="value"></param> internal void RunPreEventHandlerQueue(BusinessSlot.EObjectEvent evt, DataObjectBase value, ref bool cancel) { if (value == null) { return; } //Esegue coda per tipo oggetto //TIP: avendo registrato l'evento con <T> viene utilizzato il riferimento interno della classe non proxy //quindi la dobbiamo riprendere this.PreEventQ.Run(evt, value.mClassSchema.OriginalType, value, ref cancel); //Esegue la coda globale (catchall) this.PreEventQ.Run(evt, typeof(object), value, ref cancel); }
/// <summary> /// Registra evento per tipo su coda /// </summary> /// <typeparam name="T"></typeparam> /// <param name="evt"></param> /// <param name="func"></param> public void RegisterPostEventHandler <T>(BusinessSlot.EObjectEvent evt, BusinessSlot.BDEventPostHandler func) where T : DataObject <T> { //Aggiunge alla coda Post this.PostEventQ.Add(evt, typeof(T), func); }
/// <summary> /// Registra evento per qualunque tipo /// </summary> /// <param name="evt"></param> /// <param name="func"></param> /// <param name="inputData"></param> /// <param name="outputData"></param> public void RegisterPostEventHandlerForAny(BusinessSlot.EObjectEvent evt, BusinessSlot.BDEventPostHandler func) { //Aggiunge alla coda Post con tipo: oggetto this.PostEventQ.Add(evt, typeof(object), func); }