Я использовал 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
Я собираюсь с простым решением, описанным ниже. Я думаю, что пытался «переосмыслить» эту реализацию и добавил сложность там, где она не была нужна.