Я использую шаблон mvvm в приложении wpf. Как datasource у меня XDocument. В UI я привязываю элементы управления к значениям XElements и XAttribute из этого XDocument. f.ex.Реализация XElement, XAttribute + IDataErrorInfo для привязки в приложении wpf
<TextBox Text={Binding XElement[TitleNode].XElement[Title].Value} />
Это позволяет мне иметь данные в единственном месте - в XDoc и позволяет избежать преобразования данных из пользовательских моделей в XML.
Теперь мне нужно расширить функциональность модели с помощью IDataErrorInfo для реализации уведомления об ошибке. Поэтому мне нужно добавить интерфейс к классам XElement и XAttribute .net. У меня есть 2 решения: 1) адаптер шаблона для xelement и xattribute, который будет иметь адаптацию, реализацию интерфейса IDataErrorInfo и значение setter \ getter для значения xelement \ xattribute. Слабость - мне нужно создать объекты-адаптеры для всех элементов управления входным интерфейсом и привязать к нему. 2) Создайте дочерний класс и наследуйте от XElement \ XAttribute с реализацией интерфейса. Weekness - мне нужно преобразовать все xelements и xattributes в мой дочерний класс. Какой способ лучше?
Deserialize ваш XML в классы, которые реализуют интерфейс. Это самый простой способ сделать это. Попробуйте это в небольшом прототипе. – Will
в вашем случае, если у меня сложная структура xml (по крайней мере 15 уровней), мне нужно будет определить множество классов для десериализации, привязать к объектам вместо xdoc и иметь много данных sourcez –
Eh, затем создать граф объектов и выполнить перевод самостоятельно. – Will