Я сохранил данные о событии в EventStore:
var data = new EventData(Guid.NewGuid(),
@event.GetType().ToString(),
true,
@event.ToJsonBytes(),
@event.GetType().ToJsonBytes());
this.connection.AppendToStreamAsync(this.stream + "/" + aggregateId,
ExpectedVersion.Any, data);
Кажется, работает. Но как разобрать данные из EventStore, не указывая конкретный тип?
Я пробовал так, но это только анализирует данные для базового класса:
foreach (var data in result.Events)
{
var @event = data.Event.Data.ParseJson<Event>();
if (@event != null) // event contains only the base type data
{
events.Add(@event);
}
}
Как вернуть данные для SomeSpecialEvent, полученные из Event? Существует несколько типов событий, и я не могу указать все здесь (механизм хранения не должен знать о конкретном типе).
Есть идеи, как поместить T в .ParseJson без использования дженериков?