J'ai une API qui renvoie Il ne semble pas hériter et remplacer le comportement nécessaire dans donc ma question est - y a-t-il un moyen de le faire arriver, ou il vaut mieux avoir une API différente qui retournera quelque chose comme Xelement code>
's, et je veux que le document derrière ces xelement code> soit immuable (lecture seule). J'en ai besoin pour:
xdocument code> peut être une opération "Heavy" performance dans certains cas. li>
ul>
xdocument code> /
xelement code> /
xcontainer code>, car toutes les méthodes virtuelles là-bas sont marquées comme
interne code>: p>
xpathnavigator code>'s, ou il est préférable d'avoir de propres classes comme
iReadonlyXElement code>, etc. p> p>
3 Réponses :
Vous pouvez créer un xelement code> wrapper similaire à
lisonlycollection
IMHO, il est probablement préférable de faire votre propre classe d'emballage pour interagir avec des xdocuments / xelements. Vous pouvez ensuite Je dis
Je doute que l'AUTOR attend toujours des réponses, mais peut-être que quelqu'un d'autre le trouvera utile.
Vous pouvez également rendre le xdocument immuable à l'aide de son événement changeant: P>
class Program { static void Main(string[] args) { var xdoc = XDocument.Parse("<foo id=\"bar\"></foo>"); xdoc.Changing += (s, ev) => { throw new NotSupportedException("This XDocument is read-only"); }; try { xdoc.Root.Attribute("id").Value = "boo"; } catch (Exception e) { Console.WriteLine("EXCEPTION: " + e.Message); } Console.WriteLine("ID on exit: " + xdoc.Root.Attribute("id").Value); Console.ReadKey(); } } // Console output: // EXCEPTION: This XDocument is read-only // ID on exit: bar