private void Dialog_MessageDispatching(Object sender, MessageDispatchingEventArgs e) { if (this.Filter.Intercept(e.Message) == true) { try { this.Callback(new MessageReceivedEventArgs <TMessage>(( TMessage )e.Message, e.DialogProvider)); }finally { e.Cancel = true; } } }
protected void Dispatch <TMessage>(IMessage message, Action <TMessage> callback) where TMessage : class, IMessage { TMessage?dispatchee = message as TMessage; if (dispatchee is not null) { MessageDispatchingEventArgs eventArgs = new MessageDispatchingEventArgs(dispatchee, this.DialogProvider); this.MessageDispatching?.Invoke(this, eventArgs); if (eventArgs.Cancel == false) { callback(dispatchee); } } }