ParseResultHandler Делегат
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Важно!
Этот API несовместим с CLS.
Используется для определения делегата обработчика для завершения операции синтаксического анализа в службе языка.
public delegate void ParseResultHandler(ParseRequest ^ request);
[System.CLSCompliant(false)]
public delegate void ParseResultHandler(ParseRequest request);
[<System.CLSCompliant(false)>]
type ParseResultHandler = delegate of ParseRequest -> unit
Public Delegate Sub ParseResultHandler(request As ParseRequest)
Параметры
- request
- ParseRequest
[in] Объект ParseRequest, описывающий, что было сделано операцией анализа.
- Атрибуты
Примеры
Ниже приведен пример использования этого делегата. Этот код основан на коде в Source классе, который обрабатывает синтаксический анализ операции завершения.
namespace Microsoft.VisualStudio.Package
{
[CLSCompliant(false)]
public class Source :
IDisposable,
IVsTextLinesEvents,
IVsFinalTextChangeCommitEvents,
IVsHiddenTextClient
{
private LanguageService service;
private CompletionSet completionSet;
public virtual void Completion(IVsTextView textView,
TokenInfo info,
ParseReason reason)
{
int line;
int idx;
int hr = textView.GetCaretPos(out line, out idx));
if (hr == VSConstants.S_OK)
{
bool synchronous = (reason == ParseReason.CompleteWord ||
reason == ParseReason.DisplayMemberList);
this.BeginParse(line,
idx,
info,
reason,
textView,
new ParseResultHandler(this.HandleCompletionResponse),
synchronous);
}
}
internal void HandleCompletionResponse(ParseRequest req)
{
try
{
if (this.service == null || req.Scope == null || this.completionSet == null)
return;
ParseReason reason = req.Reason;
Declarations decls = req.Scope.GetDeclarations(req.View,
req.Line,
req.Col,
req.TokenInfo,
reason);
bool completeWord = (reason == ParseReason.CompleteWord);
if ( decls.GetCount() > 0 &&
(this.service.Preferences.AutoListMembers || completeWord))
{
this.completionSet.Init(req.View, decls, completeWord);
}
} catch (Exception e) {
}
}
}
}
Комментарии
Этот делегат описывает обработчик, который вызывается после завершения операции анализа. ParseRequestОбъект предоставляет доступ к результатам операции синтаксического анализа. Этот делегат передается в BeginParse метод в LanguageService классе.