2

使用 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() 的末尾附近添加以下代码:

-

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

1 回答 1

1

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

var myFirstEvent = stream.CommittedEvents.First().Body.FromJson<SomeDomainEvent>();
Console.Out.WriteLine("MyFirstEvent.Value=" + myFirstEvent.Value);
于 2011-08-14T18:42:25.357 回答