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

Cqrs 使用NEventStore的内置JSON序列化程序序列化复杂类型,cqrs,event-sourcing,neventstore,Cqrs,Event Sourcing,Neventstore,我在使用CQRS/事件源的应用程序中使用NEventStore。我的WireUp如下所示: return NEventStore.Wireup.Init() .LogToOutputWindow() .UsingInMemoryPersistence() .UsingSqlPersistence("TestConnection") .WithDialect(ne

我在使用CQRS/事件源的应用程序中使用NEventStore。我的WireUp如下所示:

 return NEventStore.Wireup.Init()
               .LogToOutputWindow()
               .UsingInMemoryPersistence()      
               .UsingSqlPersistence("TestConnection") 
               .WithDialect(new MsSqlDialect())
               .EnlistInAmbientTransaction()        
               .InitializeStorageEngine()               
               .UsingJsonSerialization()                             
               .Build();
序列化包含内置简单数据类型(如string和int)的事件可以正常工作。但是,当我尝试序列化使用我定义的结构的事件时,反序列化的值为null

我可能必须使用属性标记事件的成员。但是NEventStore使用什么方案呢?C#有很多选项(来自DataContract序列化程序的属性,来自XmlSerializer的属性,…)

我还想知道序列化有哪些限制。NEventStore是否需要公共空构造函数?公众设定者?或者我可以使用只读字段(我的首选项)


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

我也遇到了同样的问题,下面是我的发现。NEventStore在内部使用Newtonsoft的Json.net。以下是Newtonsoft关于序列化工作原理的页面链接:

有几个选项可以使类型序列化。我选择实现System.Runtime.Serialization.ISerializable接口,因为我不想从模型程序集中引用json.net依赖项。您的案例可能不同。

它使用