RazorEditorParser 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
編輯人員會使用剖析器來避免每次文字變更時重新剖析整份文件。
public ref class RazorEditorParser : IDisposable
public class RazorEditorParser : IDisposable
type RazorEditorParser = class
interface IDisposable
Public Class RazorEditorParser
Implements IDisposable
- 繼承
-
RazorEditorParser
- 實作
備註
此剖析器的設計目的是允許編輯器避免擔心累加剖析。 CheckForStructureChanges(TextChange)您可以使用編輯器中的使用者所做的每個變更呼叫 方法,剖析器會提供結果,指出它是否能夠累加套用變更。
使用此剖析器的編輯器一般工作流程為:
- 使用者編輯檔。
- 編輯器會建置 TextChange 結構,描述編輯並提供 更新 文字緩衝區的參考。
- 編輯器呼叫 CheckForStructureChanges(TextChange) 傳入該變更。
- 剖析器會判斷變更是否只能套用至現有的剖析樹狀節點。
enum
。 不過, Accepted 或 Rejected 旗標一律會出現。如果單一唯一的變更 (在語法樹狀結構中看到) 可以識別為擁有整個變更, 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 |
當文件的完整重新剖析完成時,會發送事件。 |