XmlSerializer и декорированные классы (C #) - PullRequest
0 голосов
/ 03 февраля 2009

Я использовал XmlSerializer для преобразования в / из XML. Вот пример класса:

[XmlRootAttribute("myClass")]
public class MyClass {
    private string someField;

    [XmlElement("someField")]
    public string SomeField {
        get {
            return someField;
        }

        set {
            someField = value;
        }
    }
}

XML будет выглядеть следующим образом:

<myClass>
    <someField>Some Value</someField>
</myClass>

Я хочу иметь возможность добавить атрибут в этот класс. Например, иногда мне нужно добавить отслеживание изменений в элемент. Атрибут, скажем «IdRef», будет добавлен к элементу myClass.

<myClass t:IdRef="someGuid" xmlns:t="uri:some:uri">
    <someField>SomeValue</someField>
</myClass>

Я надеюсь сохранить атрибут IdRef вне основного класса POCO. Кроме того, поскольку существует много классов, подобных приведенному выше, я надеюсь, что нет необходимости создавать подкласс для каждого из них, добавляя расширенный атрибут. Может быть, создание пользовательской реализации с использованием интерфейса IXmlSerializer?

UPDATE Я собираюсь с простым решением, описанным ниже. Я думаю, что пытался «переосмыслить» эту реализацию и добавил сложность там, где она не была нужна.

1 Ответ

1 голос
/ 03 февраля 2009

Что я думаю? Я думаю, вам придется вставить их в свой класс «POCO», но вы можете скрыть их в области, помеченной как «дополнительные свойства разметки сериализации», и использовать другие атрибуты, чтобы сделать их в основном невидимыми для потребителей вашего класса.

...