ParseResultHandler Temsilci

Tanım

Önemli

Bu API, CLS uyumlu değildir.

Bir dil hizmetindeki ayrıştırma işlemi tamamlama işleyicisi için bir temsilci tanımlamak üzere kullanılır.

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)

Parametreler

request
ParseRequest

'ndaki ParseRequest Ayrıştırma işleminin ne yaptığını açıklayan nesne.

Öznitelikler

Örnekler

Bu temsilcinin nasıl kullanıldığına ilişkin bir örnek aşağıda verilmiştir. Bu kod, Source bir tamamlama işlemi için ayrıştırmayı işleyen sınıftaki kodu temel alır.

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) {  
            }  
        }  
    }  
}  

Açıklamalar

Bu temsilci, bir ayrıştırma işlemi tamamlandığında çağrılan bir işleyiciyi açıklar. ParseRequestNesnesi, ayrıştırma işleminin sonuçlarına erişim sağlar. Bu temsilci, BeginParse sınıfındaki yöntemine geçirilir LanguageService .

Şunlara uygulanır