так что я делаю некоторые манипуляции с XML и попал в странную ситуацию. После добавления XElement с нулевым Parent к другому XElement у меня все еще оставалось значение Narent для Parent. Поэтому после некоторого тестирования я обнаружил проблему, но не совсем понял, как она работает.
XDocument x=new XDocument(new XElement("asd"));
XElement root=x.Root;
XElement parent=new XElement("parent");
Console.WriteLine(root.Parent?.Name??"null"); //still null
parent.Add(root);
Console.WriteLine(root.Parent?.Name??"null"); //should be
root.Remove(); // should throw InvalidOperationException
parent.Add(root);
Console.WriteLine(root.Parent?.Name??"null");//parent
Кажется, что когда вы добавляете XElement, который является корневым элементом XDocument, XElement копируется, и вам необходимо вызвать Remove перед добавлением. Документация говорит, что Remove должен выдавать исключение, когда Parent имеет значение null, но вместо этого в этом случае кажется, что он удаляет связь между XDocument и его корнем. Правильна ли эта интерпретация или есть другое объяснение?