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 классе.

Применяется к