これを理解するのに苦労しています:
Microsoft が Xattribute を Xobject の下に置く理由
彼らは言った :
属性は XNode から派生したものではありません。それらは XML ツリーのノードではありません。代わりに、要素に関連付けられた単なる名前/値のペアです。
結構…要素あり。
では、なぜ私が引き分けをしたのですか?
これを理解するのに苦労しています:
Microsoft が Xattribute を Xobject の下に置く理由
彼らは言った :
属性は XNode から派生したものではありません。それらは XML ツリーのノードではありません。代わりに、要素に関連付けられた単なる名前/値のペアです。
結構…要素あり。
では、なぜ私が引き分けをしたのですか?
属性は要素に属します。
継承を使用すると、「属性は(特別な種類の) 要素である」ことになりますが、これは明らかに正しくありません。たとえば、属性は子を持つことができません。
このツリーは継承ツリーであり、オブジェクトがどのように一緒に使用されているかを実際には示していません。
あなたが提案している場所は、継承の観点からは機能しません。要素は子要素と属性を持つことができるため、XAttribute が XElement から派生した場合、属性は子要素と独自の属性を持つことができることを意味します。同じことが XContainer にも当てはまるため、ツリーで XElement の隣に XAttribute を配置しても意味がありません。
XNode は次のステップアップです。XAttribute は XNode に適合しますか? あまり。XML を見ると、一般的な意味で、ノードと属性という 2 つの基本的な構造要素があります。どちらも他方から派生したものではないため、XAttribute と XNode が XObject ツリーの異なるブランチにあることは理にかなっています。
XObject はベース Xml2Linq オブジェクト型であり、すべてがそこから派生する必要があるため、XAttribute 型に最適な (そして実際に唯一の適切な場所) です。
これは継承ツリーであり、XAttribute
から派生していXObject
ます。