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 标志将始终存在。

仅当语法树中的单个唯一 (看到 Microsoft.AspNetCore.Razor.Parser.SyntaxTree) 可以标识为拥有整个更改时, Span 才能增量分析更改。 例如,如果更改与多个 Span重叠,则无法以增量方式分析更改,并且需要进行完整的重新分析。 Span 如果更改完全发生在其边界内的) ,或 b) 纯粹的插入 (在 的末尾Span看到 TextChange) ,其EditHandler可以接受更改 (看到 CanAcceptChange(Span, TextChange)) ,则“拥有”更改。

RazorEditorParser当 返回 Accepted时,它会立即更新CurrentParseTree。 但是,编辑器应独立更新其自己的数据结构。 一旦编辑器从 CheckForStructureChanges(TextChange)返回,它就可以执行此操作CurrentParseTree,但理想情况下,它应该 () 具有执行此操作的逻辑,而无需新树。

当 由 CheckForStructureChanges(TextChange)返回时Rejected,已启动后台分析任务。 该任务完成后, 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

当文档的重新分析已全部完成时触发事件。

适用于