Я пишу простой диспетчер событий, в котором мои события поступают как объекты с именем типа clr и объектом json, представляющим исходное событие (после того, как byte[] был обработан в jobject), которое было запущено. Я использую GetEventStore, если кто-то хочет знать подробности.
Я хочу использовать этот тип clr для двух вещей:
- найти классы, реализующие IHandles и
- вызов Consume (тип clr) для этого класса
Мне удалось заставить часть 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 - я знаю типprocessEvent.Data, потому что я не определил его выше.
Как я могу разобрать этот JObject в тип t, не делая никаких неприятных переключений на имя типа?
DeserializeObject
? - person cynic   schedule 30.07.2014