Я пытаюсь сериализовать только часть класса. Я добавил XML-атрибуты к членам класса, чтобы сгенерированные XML-теги имели правильные имена, соответствующие спецификации, независимо от того, как называются мои свойства. Это отлично работает при сериализации основного класса. Однако, если я просто хочу сериализовать часть класса, я теряю XML-атрибуты, и имена возвращаются к значениям по умолчанию. Есть ли способ сохранить атрибуты XML при сериализации только части класса?
[XmlRoot ("someConfiguration")]
public class SomeConfiguration
{
[XmlArray("bugs")]
[XmlArrayItem("bug")]
public List<string> Bugs { get; set; }
}
Когда я сериализую весь класс, я получаю это (что именно так, как я и ожидал):
<someConfiguration>
<bugs>
<bug>Bug1</bug>
<bug>Bug2</bug>
<bug>Bug3</bug>
</bugs>
</someConfiguration>
Если я попытаюсь просто сериализовать часть класса «Ошибки», я получу это (обратите внимание, что атрибуты XML, которые изменяют имена тегов, игнорируются):
<ArrayOfString>
<string>Bug1</string>
<string>Bug2</string>
<string>Bug3</string>
</ArrayOfString>
Мне нужно получить это:
<bugs>
<bug>Bug1</bug>
<bug>Bug2</bug>
<bug>Bug3</bug>
</bugs>
Как мне получить разделяемый класс для сериализации с указанными выше тегами?
Или еще лучше, есть ли способ указать имена тегов при сериализации простого List<object>
. Чтобы можно было указать тег, используемый для списка, вместо него с помощью <ArrayOfobject>
и указать тег, используемый для элементов массива, вместо <object>
?