NodaTime — могу ли я мгновенно изменить xml-сериализацию по умолчанию?

#c# #xml-serialization #nodatime

Вопрос:

NodaTime — могу ли я мгновенно изменить xml-сериализацию по умолчанию?

Есть ли способ изменить его, чтобы все мгновения были сериализованы без миллисекунд:

Вместо этого:

 <CreationDateTime>2021-06-27T09:52:18.1900643Z</CreationDateTime>
 

Я бы хотел этого:

 <CreationDateTime>2021-06-27T09:52:18Z</CreationDateTime> 
 

Мне интересно, есть ли способ сделать это для всех NodaTime.Мгновенные свойства, например, с некоторыми настройками в создаваемом нами XmlSerializer?

Ответ №1:

Нет, боюсь, что нет: формат жестко закодирован, эффективно. Я бы предложил либо выполнить постобработку XML, либо потенциально сериализовать с использованием отдельного строкового свойства, которое предназначено исключительно для XML (поэтому вы пометили бы его как устаревшее, но сериализовали бы его так, как хотите, и оно бы указывало на Instant свойство, которое не устарело, но игнорируется для сериализации XML).

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

1. Спасибо, что подтвердили это. Я думаю, что, вероятно, смогу просмотреть все элементы-потомки и использовать регулярное выражение.