LanguageService.ParseSource 方法
分析根据指定的 ParseRequest 对象的数据源。
命名空间: Microsoft.VisualStudio.Package
程序集: Microsoft.VisualStudio.Package.LanguageService.9.0(在 Microsoft.VisualStudio.Package.LanguageService.9.0.dll 中)
Microsoft.VisualStudio.Package.LanguageService.10.0(在 Microsoft.VisualStudio.Package.LanguageService.10.0.dll 中)
Microsoft.VisualStudio.Package.LanguageService.11.0(在 Microsoft.VisualStudio.Package.LanguageService.11.0.dll 中)
Microsoft.VisualStudio.Package.LanguageService(在 Microsoft.VisualStudio.Package.LanguageService.dll 中)
语法
声明
Public MustOverride Function ParseSource ( _
req As ParseRequest _
) As AuthoringScope
public abstract AuthoringScope ParseSource(
ParseRequest req
)
参数
- req
类型:Microsoft.VisualStudio.Package.ParseRequest
[in] 描述如何的 ParseRequest 分析源文件。
返回值
类型:Microsoft.VisualStudio.Package.AuthoringScope
如果成功,则返回 AuthoringScope 对象;否则,返回空值。
备注
在从 LanguageService 类派生的类必须实现此方法。 请注意分析操作可在整个源文件或一行甚至一个标记。 在 ParseRequest 的 ParseReason 代码指定分析操作的大小。
返回的 AuthoringScope 包含从源文件分析的所有信息。
备注
AuthoringScope 是一个抽象类,并且必须从其派生自拥有该类提供必要的功能。AuthoringScope 的版本在此方法中, ParseSource实例化。您必须返回 AuthoringScope 对象,即使该类的所有成员返回空值!
此方法可对该前台或后台线程和总是应根据 ParseReason 代码分析该数据源中返回。
即使 ParseRequest 结构包含一 IVsTextView 对象,您不能在后台线程的对象由于线程处理问题。 实际上,在后台线程不能使用 Source, ViewFilter, CodeWindowManager 类别,或者与视图直接或间接通信的任何类。 ParseSource 方法分析程序必须获取所有其与源的信息从总是包含整个源文件) 的 ParseRequest framework 提供的文本 (。
示例
这是 ParseSource 方法的一个可能实现的一个简单的摘要。
using Microsoft.VisualStudio;
using Microsoft.VisualStudio.Package;
namespace MyLanguagePackage
{
public class MyLanguageService : LanguageService
{
public AuthoringScope ParseSource(ParseRequest req)
{
MyAuthoringScope scope = new MyAuthoringScope();
if (req.Reason == ParseReason.Check ||
req.Reason == ParseReason.None)
{
// Parse the entire source as given in req.Text. Store results in the MyAuthoringScope object.
}
else if (req.Reason == ParseReason.DisplayMemberList)
{
// Parse the line specified in req.Line for the two tokens just before req.Col to get the identifier and the member connector symbol. Find members of the identifer in the parse tree and store the list of members in the Declarations class.
}
else if (req.Reason == ParseReason.MethodTip)
{
// Parse the line specified in req.Line for the token just before req.Col to obtain the name of the method. Find all method signatures with the same name in the existing parse tree and store the list of signatures in the Methods class.
}
// continue for the rest of the supported ParseReason values.
return scope;
}
}
}
.NET Framework 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关更多信息,请参见通过部分受信任的代码使用库。