Metoda LanguageService.GetProximityExpressions —
Zwraca listę wyrażeń należy ocenić i przedstawione w samochody okna dla danego zakresu linii.
Przestrzeń nazw: Microsoft.VisualStudio.Package
Zestawy: Microsoft.VisualStudio.Package.LanguageService.9.0 (w Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
Microsoft.VisualStudio.Package.LanguageService.10.0 (w Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
Microsoft.VisualStudio.Package.LanguageService.11.0 (w Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
Microsoft.VisualStudio.Package.LanguageService (w Microsoft.VisualStudio.Package.LanguageService.dll)
Składnia
'Deklaracja
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
)
Parametry
- buffer
Typ: Microsoft.VisualStudio.TextManager.Interop.IVsTextBuffer
[w] IVsTextBuffer Gospodarstwa pliku źródłowego.
- line
Typ: System.Int32
[w] Pierwszy wiersz zakresu do zbadania w wyrażeniach.
- col
Typ: System.Int32
[w] Przesunięcie w pierwszym wierszu, aby rozpocząć wyszukiwanie wyrażeń.
- cLines
Typ: System.Int32
[w] Liczba wierszy do zbadania.
- ppEnum
Typ: Microsoft.VisualStudio.TextManager.Interop.IVsEnumBSTR%
[out] IVsEnumBSTR Obiekt, który zawiera wykaz wyrażeń do zbadania.Zwraca wartość null, aby wskazać nie wyrażenia.
Wartość zwracana
Typ: System.Int32
Jeśli się powiedzie, zwraca S_OK, zwraca S_FALSE , jeśli nie istnieją żadne wyrażenia; w przeciwnym razie zwraca kod błędu.
Implementuje
IVsLanguageDebugInfo.GetProximityExpressions(IVsTextBuffer, Int32, Int32, Int32, IVsEnumBSTR%)
Uwagi
Ta metoda jest wywoływana podczas debugowania w celu uzyskania listy zmiennych, które mogą być wyświetlane w samochody okna.Zakres wierszy zazwyczaj obejmuje metody lub funkcji.
Tę metodę można zastosować do używać wersji AuthoringSink klasy, zgromadzony wyrażenia przez AutoExpression metody.Implementacji byłoby przeszukać listę wyrażeń zebranych podczas analizowania operacji i zwrócić wszystkie wyrażenia, które spadły w okresie, określonym przez line, col, i cLines argumentów.
Metody podstawowej zawsze zwraca wartość null.
Przykłady
W tym miejscu jest jedną z możliwych implementacji GetProximityExpressions wywołuje metodę ParseSource parser metoda uzyskania span kod skojarzony z bieżącej lokalizacji.Należy zauważyć, że ParseSource wywoływana jest metoda w bieżącym wątku tak obsługi Autos analizy przyczyny muszą być bardzo szybki uniknąć opóźnień podczas wypełniania Cofnij samochody okna.
GetAutoExpressionsCount i GetAutoExpression w przykładzie przedstawiono niestandardowe metody na MyAuthoringSink obiektu i zostały dodane do obsługi tego przykładem implementacji.Ponadto MyVsEnumBSTR klasa jest klasą, który implementuje IVsEnumBSTR interfejsu.
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;
}
}
}
Zabezpieczenia programu .NET Framework
- Pełne zaufanie do bezpośredniego wywołującego. Tego elementu członkowskiego nie można używać w kodzie częściowo zaufanym. Aby uzyskać więcej informacji, zobacz Przy użyciu bibliotek z częściowo zaufanego kodu..