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