使用NEventStore的内置JSON序列化器

时间:2015-07-20 18:01:33

标签: cqrs event-sourcing neventstore

我在使用CQRS / Event-Sourcing的应用程序中使用NEventStore。我的WireUp如下所示:

 return NEventStore.Wireup.Init()
               .LogToOutputWindow()
               .UsingInMemoryPersistence()      
               .UsingSqlPersistence("TestConnection") 
               .WithDialect(new MsSqlDialect())
               .EnlistInAmbientTransaction()        
               .InitializeStorageEngine()               
               .UsingJsonSerialization()                             
               .Build();

序列化包含内置简单数据类型的事件,例如string和int可以正常工作。但是,当我尝试序列化使用我定义的结构的事件时,反序列化的值为null。

我可能必须使用属性标记我的事件的成员。但是NEventStore使用什么方案? C#有很多选项(DataContract Serializer的属性,XmlSerializer的属性,......)。

我也想知道序列化有什么限制。 NEventStore是否需要公共空构造函数?公共制定者?或者我可以使用只读字段(我的偏好)。

我一直无法弄清楚Json序列化程序NEventStore使用了什么。它似乎不是NetwonSoft的那个,因为那个有一个单独的nuget包。

1 个答案:

答案 0 :(得分:0)

我遇到同样的问题,所以我发现了这个问题。 NEventStore内部使用Newtonsoft的Json.net。这是关于序列化如何工作的Newtonsoft页面的链接:http://www.newtonsoft.com/json/help/html/serializationguide.htm#ISerializable

您可以通过多种方式获取序列化类型。我选择实现System.Runtime.Serialization.ISerializable接口,因为我不想从模型程序集中引用json.net依赖项。你的情况可能不同。