Я пытался использовать пример кода Джимми Богарда о библиотеке 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;
}
}
}