Я использую NEventStore в приложении, использующем CQRS/Event-Sourcing. Мой WireUp выглядит следующим образом:Сериализация сложных типов с использованием встроенного JSON-сериализатора NEventStore
return NEventStore.Wireup.Init()
.LogToOutputWindow()
.UsingInMemoryPersistence()
.UsingSqlPersistence("TestConnection")
.WithDialect(new MsSqlDialect())
.EnlistInAmbientTransaction()
.InitializeStorageEngine()
.UsingJsonSerialization()
.Build();
Сериализация события, которые содержат встроенные простые типы данных, такие как строки и междунар работает отлично. Однако, когда я пытаюсь сериализовать событие, которое использует структуру, которую я определил, десериализованное значение равно null.
Возможно, мне придется отмечать элементы моего события с использованием атрибутов. Но какая схема использует NEventStore? У C# есть несколько вариантов (атрибуты из DataContract Serializer, атрибуты из XmlSerializer, ...).
Мне также интересно, какие ограничения существуют при сериализации. Требуется ли NEventStore публичный пустой конструктор? Публичные сеттеры? Или я могу использовать поля readonly (мои предпочтения).
Мне не удалось выяснить, что использует сериализатор Json NEventStore. Кажется, это не тот, что NetwonSoft, поскольку для него есть отдельный пакет nuget.
Он использует [Json.Net] (https://github.com/NEventStore/NEventStore/blob/master/src/NEventStore/Serialization/JsonSerializer.cs) – MikeSW