У меня есть API, который возвращает XElement
, и я хочу, чтобы документ за этими XElement
был неизменным (только для чтения). Мне это нужно для:
- Не дать разработчикам возможность случайно изменить его:)
- Улучшение производительности - в некоторых случаях создание копии
XDocument
может быть «тяжелой» операцией.
Кажется невозможным наследовать и переопределять необходимое поведение в XDocument
/ XElement
/ XContainer
, потому что все виртуальные методы там помечены как internal
:
internal virtual void XContainer.AddAttribute(XAttribute a)
{
}
Так что мой вопрос - есть ли способ сделать это, или лучше иметь другой API, который будет либо возвращать что-то вроде XPathNavigator
, либо лучше иметь собственные классы, такие как IReadOnlyXElement
, etc.?