返回在 汽车 窗口将计算和显示的表达式列表,行特定的大小。
命名空间: 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 Overridable Function GetProximityExpressions ( _
buffer As IVsTextBuffer, _
line As Integer, _
col As Integer, _
cLines As Integer, _
<OutAttribute> ByRef ppEnum As IVsEnumBSTR _
) As Integer
public virtual int GetProximityExpressions(
IVsTextBuffer buffer,
int line,
int col,
int cLines,
out IVsEnumBSTR ppEnum
)
参数
- buffer
类型:Microsoft.VisualStudio.TextManager.Interop.IVsTextBuffer
[in] 保留源文件的 IVsTextBuffer 。
- line
类型:System.Int32
[in] 检查范围的第一行的表达式。
- col
类型:System.Int32
[in] 在启动的第一行的偏移量查找表达式。
- cLines
类型:System.Int32
[in] 检查的行数。
- ppEnum
类型:Microsoft.VisualStudio.TextManager.Interop.IVsEnumBSTR%
[out] 包含表达式列表检查的 IVsEnumBSTR 对象。不要返回空值指示表达式。
返回值
类型:System.Int32
如果成功,则返回 S_OK,返回 S_FALSE ,如果没有表达式;否则,返回错误代码。
实现
IVsLanguageDebugInfo.GetProximityExpressions(IVsTextBuffer, Int32, Int32, Int32, IVsEnumBSTR%)
备注
此方法调用在调试获取过程中 汽车 窗口中显示变量的列表。行的大小通常包含方法或函数。
此方法实现使用 AutoExpression 方法收集了表达式 AuthoringSink 类的版本。实现将搜索在分析操作中收集的表达式列表,并返回属于该范围的任何表达式都由 line、 col和 cLines 参数指定了。
该基方法始终返回 null 值。
示例
这是调用 ParseSource 方法分析器获取代码大小与当前位置 GetProximityExpressions 方法的一个可能的实现。请注意 ParseSource 调用方法当前线程,这样处理 Autos 分析原因必须是非常快避免移除在填充 汽车 窗口的延迟。
在本示例中显示的 GetAutoExpressionsCount 和 GetAutoExpression 方法是在 MyAuthoringSink 对象的自定义方法和添加支持本示例实现。此外, MyVsEnumBSTR 类是一个实现 IVsEnumBSTR 接口的类。
using Microsoft.VisualStudio;
using Microsoft.VisualStudio.Package;
using Microsoft.VisualStudio.TextManager.Interop;
namespace MyLanguagePackage
{
public class MyLanguageService : LanguageService
{
public override int GetProximityExpressions(IVsTextBuffer buffer,
int line,
int col,
int cLines,
out IVsEnumBSTR ppEnum)
{
int retval = HRESULT.E_NOTIMPL;
ppEnum = null;
if (buffer != null)
{
IVsTextLines textLines = buffer as IVsTextLines;
if (textLines != null)
{
Source src = this.GetSource(textLines);
if (src != null)
{
TokenInfo tokenInfo = new TokenInfo();
string text = src.GetText();
ParseRequest req = CreateParseRequest(src,
line,
col,
tokenInfo,
text,
src.GetFilePath(),
ParseReason.Autos,
null);
req.Scope = this.ParseSource(req);
MyAuthoringSink sink = req.Sink as MyAuthoringSink;
retval = VSConstants.S_FALSE;
int spanCount = sink.GetAutoExpressionsCount();
if (spanCount > 0) {
MyVsEnumBSTR bstrList = new MyVsEnumBSTR();
for (int i = 0; i < spanCount; i++)
{
TextSpan span;
sink.GetAutoExpression(i, out span);
string expression = src.GetText(span.iStartLine,
span.iStartIndex,
span.iEndLine,
span.iEndIndex);
bstrList.AddString(expression);
}
ppEnum = bstrList;
retval = VSConstants.S_OK;
}
}
}
}
return retval;
}
}
}
.NET Framework 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关更多信息,请参见通过部分受信任的代码使用库。