Как сериализовать рекурсивный словарь в С#? ⇐ C#

Место общения программистов C#
Anonymous
Как сериализовать рекурсивный словарь в С#?

Сообщение Anonymous »

Ниже класса находится рекурсивный словарь (древовидная структура). EntitiyID — это всего лишь псевдоним строки, доступ к которой осуществляется через HierarchicalRelationshipsMap.EntityID.

Код: Выделить всё

public class HierarchicalRelationshipsMap: Dictionary
{

public class EntityID
{
public static implicit operator EntityID(string value) => new EntityID();
public static implicit operator string(EntityID entityID) => string.Empty;
}

}
Пример экземпляра:

Код: Выделить всё

HierarchicalRelationshipsMap hierarchicalRelationshipsMap = new()
{
{
Guid.NewGuid().ToString(),
new HierarchicalRelationshipsMap
{
{Guid.NewGuid().ToString(), new HierarchicalRelationshipsMap() },
{Guid.NewGuid().ToString(), new HierarchicalRelationshipsMap() }
}
}
};
Если сериализовать его с помощью Newtonsoft.Json.JsonConvert.SerializeObject(hierarchicalRelationshipsMap, Newtonsoft.Json.Formatting.Indented));, это будет:

Код: Выделить всё

{
"MockDataSource.HierarchicalRelationshipsMap+EntityID": {
"MockDataSource.HierarchicalRelationshipsMap+EntityID": {},
"MockDataSource.HierarchicalRelationshipsMap+EntityID": {}
}
}
хотя что-то вроде ожидаемого ниже.

Код: Выделить всё

{
"2ca15c6b-e706-4f1c-b287-1629ed0bac0a": {
"21333569-4248-49ac-ba0c-d1612a2c42a8": {}
"fc7ad745-8890-4a68-9431-c8de4801470b": {}
}
}
Как это исправить?


Подробнее здесь: https://stackoverflow.com/questions/791 ... onary-in-c

Вернуться в «C#»