我正在编写一个简单的事件调度程序,其中我的事件作为具有 clr 类型名称的对象和代表被触发的原始事件(在 byte[] 被处理到 jobject 之后)的 json 对象进入。如果有人想知道细节,我正在使用 GetEventStore。
我想用 clr 类型做两件事:
- 找到实现 IHandles 的类和
- 在该类上调用 Consume(clr type)
我已经设法使第 1 部分使用以下代码正常工作:
var processedEvent = ProcessRawEvent(@event);
var t = Type.GetType(processedEvent.EventClrTypeName);
var type = typeof(IHandlesEvent<>).MakeGenericType(t);
var allHandlers = container.ResolveAll(type);
foreach (var allHandler in allHandlers)
{
var method = allHandler.GetType().GetMethod("Consume", new[] { t });
method.Invoke(allHandler, new[] { processedEvent.Data });
}
ATM的问题是processedEvent.Data是一个JObject——我知道processedEvent.Data的类型,因为我没有在它上面定义。
如何在不对类型名称进行任何讨厌的切换的情况下将该 JObject 解析为类型 t?