使用NEventStore内置的JSON序列化器序列化复杂类型



我在使用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需要一个公共的空构造函数吗?公共setter ?或者我可以使用只读字段(我的偏好)。

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

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

您有几个选项来获得类型序列化。我选择实现system . runtime . serialize . iserializable接口,因为我不想从模型程序集中引用json.net依赖项。你的情况可能不同。

相关内容

  • 没有找到相关文章

最新更新