XamlReader.ReadSubtree 方法

定義

傳回以目前 XamlReader 為基礎的 XamlReader,而傳回的 XamlReader 可用來逐一查看 XAML 節點結構的子樹狀結構。

public:
 virtual System::Xaml::XamlReader ^ ReadSubtree();
public virtual System.Xaml.XamlReader ReadSubtree ();
abstract member ReadSubtree : unit -> System.Xaml.XamlReader
override this.ReadSubtree : unit -> System.Xaml.XamlReader
Public Overridable Function ReadSubtree () As XamlReader

傳回

子樹狀結構的新 XAML 讀取器執行個體。

備註

這個方法具有預設實作,並傳回有效的 XamlReader 。 傳回的 XamlReader 是限制特定 XamlReader 動作的內部類別。 限制與唯讀取 XAML 節點集較大來源的維度子樹的目的一致,以及在結束子樹時傳回檔案結尾或 null 目前節點。

一般而言,您應該從初始 Read 檢查目前的節點,以判斷是否需要子樹讀取器。 您檢查此情況的方式可能是實作特定的;不過,請避免為每個子樹建立多個子樹讀取器。 此外,請避免針對特定節點案例叫用子樹讀取器 (例如,例如 NamespaceDeclaration 無法包含節點子樹的) 。

取得子樹讀取器之後,您必須呼叫 Read 該讀取器,以取得目前的節點 (或呼叫 Skip 以取得下一個節點) 。 建立子樹讀取器時,您不會自動從子樹讀取器取得初始節點位置。

您從這個預設實作呼叫 ReadSubtree 取得的讀取器是內部類別。 內部類別是以 XamlReader 呼叫 時 ReadSubtree 所使用的實作為基礎。 內部類別的目的是包裝 Read 和 一般周遊行為。 周遊會藉由追蹤 StartMember/EndMember 配對或 StartObject/EndObject 配對,保留在預定的子樹內。 當讀取器位於子樹的結尾時,它也會正確針對 和 trueIsEof 傳回 falseRead ,如其進入點所定義。 一般而言,假設您從子樹讀取器呼叫的任何 XamlReader API 都有與整體 XamlReader 相同的實作,但周遊界限行為除外。

不過, ReadSubtree 是虛擬的。 因此,特定 XamlReader 實作可以提供與內部包裝函式行為不同的 XamlReader 行為;而 XamlReader 實作甚至可以藉由傳回 NotImplementedException 或其他例外狀況來停用子樹讀取器功能。

適用於