【问题标题】:Why does FirstNode.GetType() return an XElement and not a XNode为什么 FirstNode.GetType() 返回 XElement 而不是 XNode
【发布时间】:2020-05-26 14:18:38
【问题描述】:

c# 文档说 FirstNode 属性返回一个 XNode。

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

但是,当我在上面调用 GetType() 方法时,它会显示 System.Xml.Linq.XElement

例如..

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 本身。 有人可以解释发生了什么。

【问题讨论】:

  • 为什么不是 XObject?为什么不只是一个对象

标签: c# types linq-to-xml


【解决方案1】:

Object.GetType 返回当前实例的确切运行时类型 (docs)。在您的情况下,First 返回的节点是XElement,它是XNode 的后代。

XElement 的类型层次结构来自 docs

Object -> XObject -> XNode -> XContainer -> XElement

【讨论】:

  • 谢谢。解释清楚
【解决方案2】:

根据docs,XElement 继承自 XNode。 FirstNode 可以是任何从 XNode 继承的东西。

【讨论】:

    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 2015-11-02
    • 2021-09-13
    • 2017-06-30
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多