예제 #1
0
    public static void RegisterHandler <TMessage>(this IBus dispatcher,
                                                  TypedRequestHandlerDelegate <TMessage> handlerDelegate,
                                                  Type messageType)
        where TMessage : IMessage
    {
        var requestTypeName = messageType.Name;

        dispatcher.RegisterHandler(requestTypeName, (scope, message) =>
        {
            HandleCore();
            return(false);

            void HandleCore()
            {
                var payloadJson = message.PayloadJson;
                if (string.IsNullOrEmpty(payloadJson))
                {
                    return;
                }

                var payload = (TMessage)JsonSerializer.Deserialize(payloadJson, messageType) !;
                handlerDelegate.Invoke(scope, payload, message);
            }
        });
    }
예제 #2
0
 public static void RegisterHandler(this IBus dispatcher,
                                    TypedRequestHandlerDelegate <IAfEvent> handlerDelegate,
                                    Type afEventType)
 => dispatcher.RegisterHandler <IAfEvent>(handlerDelegate, afEventType);
예제 #3
0
 public static void RegisterHandler <TMessage>(this IBus dispatcher,
                                               TypedRequestHandlerDelegate <TMessage> handlerDelegate)
     where TMessage : IMessage
 => dispatcher.RegisterHandler(handlerDelegate, typeof(TMessage));