JOliver的EventStore:使用ServiceStack序列化程序时无法读取事件

时间:2011-08-12 21:42:01

标签: cqrs event-sourcing event-store

使用ServiceStack时,EventMessage.Body不会反序列化回原始对象。相反,EventMessage.Body是一个JSON字符串。

重现:

  1. 打开EventStore项目并导航到EventStore.Example项目
  2. 将EventStore.Serialization.Json引用替换为对EventStore.Serialization.ServiceStack的项目引用
  3. 关闭EventStore.Example项目上的程序集签名
  4. 将MainProgram.WireupEventStore更改为.UsingServiceStackJsonSerialization()
  5. 在MainProgram.Main()附近添加以下代码:
  6. -

    var stream = store.OpenStream(StreamId, 0, int.MaxValue);
    var myFirstEvent = (SomeDomainEvent) (stream.CommittedEvents.First().Body);
    Console.Out.WriteLine("MyFirstEvent.Value=" + myFirstEvent.Value);
    

1 个答案:

答案 0 :(得分:1)

如果它是一个字符串并且您期望SomeDomainEvent,您可以使用ServiceStack的 FromJson 扩展方法,即:

var myFirstEvent = stream.CommittedEvents.First().Body.FromJson<SomeDomainEvent>();
Console.Out.WriteLine("MyFirstEvent.Value=" + myFirstEvent.Value);