Как заставить XmlSerializer генерировать атрибуты вместо элементов по умолчанию

Есть ли способ вызвать XmlSerializer для сериализации примитивных членов класса (например, строковых свойств) как атрибутов XML, а не как элементов XML, без необходимости писать [XmlAttribute] перед каждым объявлением свойства? Т.е. есть ли глобальный переключатель, который сообщает XmlSerializer сериализовать все примитивные члены класса как атрибуты XML?

Предположим, что у нас есть следующий класс:

public class Person
{
    public string FirstName
    {
       ...
    }

    public string LastName
    {
       ...
    }
}

Затем XmlSerializer генерирует этот код с помощью по умолчанию:

<Person>
    <FirstName>John</FirstName>
    <LastName>Doe</LastName>
</Person>

Я хочу, однако, следующий код:

<Person FirstName="John" LastName="Doe"/>

Опять же: я хочу сделать это без [XmlAttribute] (или без XmlAttributeOverrides , что было бы даже больше работы).

Одним из возможных решений может быть использование общего шага постобработки, который применяет преобразование XSLT для преобразования элементов в атрибуты. Но мне интересно, есть ли решение попроще.

14
задан John Saunders 10 January 2012 в 17:25
поделиться