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 に答える