Типы данных

Поддерживаемые типы данных и примеры использования

Поддерживаемые типы данных:

  1. Примитивные типы:

    • bool, byte, sbyte, char, decimal, double, float, int, uint, long, ulong, short, ushort

  2. Специальные типы:

    • string

    • Guid

    • DateTime

    • TimeSpan

  3. Перечисления (enum):

    • Любые пользовательские enum

  4. Nullable-типы:

    • int?, bool?, DateTime? и т.д.

  5. Коллекции:

    • Массивы: int[], string[] и т.д.

    • List<T>, IList<T>, ICollection<T>, IEnumerable<T>

    • HashSet<T>, SortedSet<T>

    • Любые другие коллекции, реализующие IEnumerable

  6. Словари:

    • Dictionary<TKey, TValue>, IDictionary<TKey, TValue>, IDictionary

  7. Кортежи (ValueTuple):

    • (int, string), ValueTuple<int, string>

    • (int Id, string Name) - именованные кортежи

  8. Пользовательские объекты (DTO):

    • Любые классы или структуры с публичными свойствами


Примеры использования:

1. Примитивные типы и строки

2. Дата и время

3. Перечисления

4. Nullable-типы

5. Массивы и списки

6. Словари

7. Кортежи

8. Пользовательские объекты

9. Вложенные объекты

10. Сложные коллекции


Особенности работы:

  1. Порядок свойств:

    • Свойства сериализуются в алфавитном порядке

    • Кортежи сериализуются по порядку полей

  2. Обработка null:

    • Строки: null длина -1

    • Ссылочные типы: записывается флаг наличия значения

    • Nullable<T>: отдельный флаг

  3. Ограничения:

    • Приватные поля не поддерживаются

    • Циклические ссылки не обрабатываются

    • Интерфейсы требуют явного указания типа при десериализации

Last updated

Was this helpful?