Почему FirstNode.GetType () возвращает XElement, а не XNode - PullRequest
1 голос
/ 26 мая 2020

В c# документах говорится, что свойство FirstNode возвращает XNode.

public System.Xml.Linq.XNode FirstNode { get; }

Однако, когда я вызываю для него метод GetType (), он говорит: System.Xml.Linq.XElement

For пример ..

var MyElement = new XElement("Base",
                new XElement("FirstName", "John",
                    new XComment("Thats a cool name")),
                new XElement("LastName", "Doe")
            );

Console.WriteLine(MyElement.FirstNode.GetType());//System.Xml.Linq.XElement

Более того, у него нет методов, которые применяются к XElements, таких как само свойство FirstNode. Может кто-нибудь объяснить, что происходит.

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Object.GetType возвращает точный тип среды выполнения текущего экземпляра ( docs ). И узел, возвращаемый First, в вашем случае - XElement, который является потомком XNode.

Иерархия типов для XElement из docs :

Object -> XObject -> XNode -> XContainer -> XElement
0 голосов
/ 26 мая 2020

Согласно docs , XElement наследуется от XNode. FirstNode может быть любым, что наследуется от XNode.

...