This commit is contained in:
2024-02-11 11:19:17 +03:00
parent 341b409264
commit a586c5a0f9
7 changed files with 155 additions and 10 deletions

View File

@@ -1,5 +1,6 @@
using System.Collections;
using anbs_cp.Interfaces;
using anbs_cp.Structs;
namespace anbs_cp.Classes;
@@ -10,7 +11,7 @@ namespace anbs_cp.Classes;
/// <typeparam name="TK">Тип ключа</typeparam>
/// <typeparam name="TV">Тип значения</typeparam>
// ReSharper disable once ClassCanBeSealed.Global
public class KeyValueList<TK, TV>: IEnumerable<KeyValue<TK, TV>>
public class KeyValueList<TK, TV>: IEnumerable<KeyValue<TK, TV>>, ISerializable
{
/// <summary>
/// Хранение значений
@@ -171,4 +172,42 @@ public class KeyValueList<TK, TV>: IEnumerable<KeyValue<TK, TV>>
/// <returns><see cref="IEnumerator"/></returns>
IEnumerator IEnumerable.GetEnumerator () => GetEnumerator();
#endregion
#region Реализация интерфейса ISerializable
/// <inheritdoc />
public string Serialize ()
{
// Создаю результат
List<string> result = [];
// Добавляю сериализованные значения
result.AddRange(_list.Select(static item => item.Serialize()));
// Вывожу результат
return new SysTextSerializer().Serialize(result);
}
/// <inheritdoc />
public void Deserialize (string json)
{
// Создаю результат
List<string> result = new SysTextSerializer().Deserialize<List<string>>(json) ?? [];
// Очищаю список
_list.Clear();
// Пробегаю все значения
foreach (string itemString in result)
{
// - создаю новое значение
KeyValue<TK, TV> item = new();
// - десериализую в него элемента
item.Deserialize(itemString);
// - добавляю получившееся в список
_list.Add(item);
}
}
#endregion
}