共用方式為


RazorEditorParser 類別

定義

編輯人員會使用剖析器來避免每次文字變更時重新剖析整份文件。

public ref class RazorEditorParser : IDisposable
public class RazorEditorParser : IDisposable
type RazorEditorParser = class
    interface IDisposable
Public Class RazorEditorParser
Implements IDisposable
繼承
RazorEditorParser
實作

備註

此剖析器的設計目的是允許編輯器避免擔心累加剖析。 CheckForStructureChanges(TextChange)您可以使用編輯器中的使用者所做的每個變更呼叫 方法,剖析器會提供結果,指出它是否能夠累加套用變更。

使用此剖析器的編輯器一般工作流程為:

  1. 使用者編輯檔。
  2. 編輯器會建置 TextChange 結構,描述編輯並提供 更新 文字緩衝區的參考。
  3. 編輯器呼叫 CheckForStructureChanges(TextChange) 傳入該變更。
  4. 剖析器會判斷變更是否只能套用至現有的剖析樹狀節點。
注意:其他旗標可以套用至 PartialParseResult ,如需詳細資訊,請參閱 enum 。 不過, AcceptedRejected 旗標一律會出現。

如果單一唯一的變更 (在語法樹狀結構中看到) 可以識別為擁有整個變更, Span 則只能以累加方式剖析 Microsoft.AspNetCore.Razor.Parser.SyntaxTree 變更。 例如,如果變更與多個 Span 重迭,則無法以累加方式剖析變更,而且需要完整重新分析。 如果 Span 變更完全在其界限內發生) ,或 b) 它是純插入 (在可以接受變更 () 的 CanAcceptChange(Span, TextChange) 結尾 SpanEditHandler 看到 TextChange) ,則「擁有」變更。

RazorEditorParser當 傳 Accepted 回 時,它會立即更新 CurrentParseTree 。 不過,編輯器預期會獨立更新它自己的資料結構。 只要編輯器從 CheckForStructureChanges(TextChange) 傳回 ,它就可以使用 CurrentParseTree 來執行這項操作,但最好 (最好) 有邏輯來執行這項操作,而不需要新的樹狀結構。

當 傳回 時 RejectedCheckForStructureChanges(TextChange) ,背景剖析工作 已經 啟動。 當該工作完成時, DocumentParseComplete 將會引發事件,其中包含新的產生的程式碼、剖析樹狀結構,以及造成重新分析之原始 TextChange 專案的參考,讓編輯器能夠針對呼叫 CheckForStructureChanges(TextChange) 之後所做的任何變更解析新的樹狀結構。

如果在重新分析進行中時發生呼叫 CheckForStructureChanges(TextChange) ,重新分析會立即取消,而且 Rejected 不會嘗試重新分析就會傳回。 這表示,如果取用者呼叫 CheckForStructureChanges(TextChange) ,它會傳 Rejected 回 ,然後在引發之前 DocumentParseComplete 再次呼叫它,它只會接收一個事件,以供第二次 DocumentParseComplete 變更使用。

建構函式

RazorEditorParser(RazorEngineHost, String)

建構編輯人員剖析器。 每個使用中編輯器應該使用一個實例。 這個實例 可以在 重新剖析之間共用,但 不應該 在檔之間共用。

屬性

CurrentParseTree

編輯人員會使用剖析器來避免每次文字變更時重新剖析整份文件。

FileName

編輯人員會使用剖析器來避免每次文字變更時重新剖析整份文件。

Host

編輯人員會使用剖析器來避免每次文字變更時重新剖析整份文件。

LastResultProvisional

編輯人員會使用剖析器來避免每次文字變更時重新剖析整份文件。

方法

CheckForStructureChanges(TextChange)

判斷變更是否會導致文件的結構變更。如果不會,則套用至現有的樹狀目錄。 如果發生結構變更,會自動開始重新剖析。

Dispose()

處置這個剖析器。 當編輯器視窗關閉且檔卸載時,應該呼叫 。

Dispose(Boolean)

編輯人員會使用剖析器來避免每次文字變更時重新剖析整份文件。

GetAutoCompleteString()

編輯人員會使用剖析器來避免每次文字變更時重新剖析整份文件。

事件

DocumentParseComplete

當文件的完整重新剖析完成時,會發送事件。

適用於