Страницы

Поиск по вопросам

понедельник, 28 января 2019 г.

Как я могу в .net сериализовать GUID без дефисов?

Как я могу в .net сериализовать в формат XML GUID без дефисов?
Структура выходного документа не важна.
Необходимо, например, вместо 5c88f0fc-9edf-4428-9ee1-b28ba2a5f03c получить 5c88f0fc9edf44289ee1b28ba2a5f03c


Ответ

В качестве воркэраунда можно использовать такую конструкцию:
public class Data { public int X { get; set; }
[XmlIgnore] // это не сериализуем public Guid Y { get; set; }
[XmlElement(ElementName = "Y")] // а вместо Y сериализуем вот это public string YSerializable { get => Y.ToString("N"); set => Y = Guid.Parse(value); } }
Получаем XML:
1 0102030405060708090a0b0c0d0e0f10
Минус: лишнее свойство, нужное лишь для сериализации.

В качестве альтернативы, можно реализовать IXmlSerializable. Но это, наверное, больше мороки.

Комментариев нет:

Отправить комментарий