MediatR - как отправлять сообщения из строки JSON - PullRequest
0 голосов
/ 15 февраля 2019

Я пытался использовать пример кода Джимми Богарда о библиотеке MediatR.Но вместо возможности создания экземпляра Ping непосредственно в коде, я хотел бы, чтобы все сообщения приходили как строка JSON, а все сообщения обрабатывались методом Dispatch.

У меня есть сообщение JSON, подобноеследующее:

{
    "payload": {
        "message": "ping"
    },
    "type": "ping",
            "correlationId" : 123
}

Как создать экземпляр путем отражения заполненного сообщения Ping и предоставить его методу Send посредника ??

namespace MediatR.Examples
{
    public class Ping : IRequest<Pong>
    {
        public string Message { get; set; }
    }
}



using MediatR;
using Newtonsoft.Json.Linq;
using System;

namespace Web.Commands
{
    public class MediatorDispatcher
    {
        private readonly IServiceProvider _serviceProvider;
        private readonly IMediator _mediator;

        public MediatorDispatcher(IServiceProvider serviceProvider, IMediator mediator)
        {
            _serviceProvider = serviceProvider;
            _mediator = mediator;
        }

        public object Dispatch(string json)
        {
            JObject jObject = JObject.Parse(json);
            JToken jToken = jObject["type"];
            if (jToken == null)
            {
                throw new Exception("The parameter type is missing in the JSON string (Pay attention: it is case sensitive).");
            }

            var result = _mediator.Send("HOW TO INSTANTIATE A PING MESSAGE FROM THE JSON STRING????? ");
            return result;
        }
    }
}
...