2014-07-09 25 views
1
XmlDocument xmlDoc = new XmlDocument();   
XmlElement elem = xmlDoc.CreateElement("Elem"); 
xmlDoc.AppendChild(elem); 

AppendChild()做一些改變,由xmlDoc中引用的對象....很有道理它是一個成員函數爲什麼CreateElement()是XmlDocument類的成員函數?

CreateElement()這看起來更像是一個常見的功能,所有的對象....爲什麼它是一個成員函數()?

+0

我想這是因爲內部新鮮創建的元素中的某些東西被初始化,特定於給定的XML文檔。這是不可能的,如果它是靜態的 - 或者你必須通過相應的'XmlDocument'實例。順便說一下:您可以查看框架的源代碼並親自查看發生了什麼。 –

回答

1

CreateElement方法使用XmlElementconstuctor,這需要XmlDocument作爲構造則params的一個可能創建了一個新XmlElement

+1

當你可以[查看源代碼](http://referencesource.microsoft.com/#System.Xml/Xml/System/Xml/Dom/XmlDocument.cs#890)時,爲什麼猜測或者用「很可能」 –

+2

接下來的問題是:爲什麼XmlElement類需要XmlDocument參數?最後,設計決定是不應該有沒有OwnerDocument的XmlElement。爲什麼這個決定可能只能由這個班的設計師回答。 – sloth

+0

這更多的是關於DOM規範,而不是關於作者的實現決定。例如:假設一個節點的所有子節點都屬於同一個文檔;一個子節點列表是一個實時列表,它反映了變化;默認屬性值取決於文檔;編輯:實體。所以,你不能從一個文檔中選擇一個元素並將其移動到另一個文檔,你必須克隆它。 – acelent

相關問題