Freigeben über


IntelliSense-Parameterinformationen (Managed Paketframework)

IntelliSense-Parameterinformationen sind eine QuickInfo, die die Signatur einer Methode wenn der Benutzer das Parameterlisten anfangs Zeichen (i. d. R. eine öffnende Klammer) für die Methoden parameterliste anzeigt. Während jeder Parameter eingegeben wird und das Trennzeichen (in der Regel ein Komma) typisiert ist, wird die QuickInfo aktualisiert, um den nächsten Parameter in Fettschrift anzuzeigen.

Die Klassen des verwalteten Paketframeworks (MPF) bieten Unterstützung für die Verwaltung der Parameterinformationens die QuickInfo. Der Parser muss Parameter, beginnend, Parameter und Endzeichen Parameter auf Weiter, und er muss erkennen eine Liste von Methodensignaturen und ihren zugeordneten Parameter angeben.

Implementierung

Der Parser muss der Trigger ParameterStart-Wert festlegen wird festgelegt, wenn er ein Parameterlisten anfangs Zeichen sucht (meist eine öffnende Klammer). Sie muss einen ParameterNext Trigger festlegen, wenn sie ein Trennzeichen sucht (meist ein Komma). Dadurch wird eine Parameterinformationens die QuickInfo zu aktualisierenden und zeigt den nachfolgenden Parameter fett dargestellt. Der Parser muss der Trigger ParameterEnd-Wert festlegen, wenn das Endzeichen Parameterlisten gefunden (meist der schließenden Klammer).

Der Wert für ParameterStart Trigger initiiert einen Aufruf der MethodTip-Methode, die wiederum den Methoden ParseSource Parser mit einem Analysis grund von MethodTipaufruft. Wenn der Parser dass der Bezeichner angegeben wird, bevor das Parameterlisten anfangs ein Eingabezeichen anerkannter Methodenname ist, gibt es eine Liste der übereinstimmenden Methodensignaturen im AuthoringScope-Objekt zurück. Wenn eine Methodensignatur wurden, die Parameterinformationens die QuickInfo angezeigt wird mit der ersten Signatur in der Liste gefunden. Diese QuickInfo wird dann aktualisiert, wie mehr der Signatur definiert wurde. Wenn das Parameterlisten abschließendes Zeichen eingegeben wird, wird die Parameterinformationens die QuickInfo aus der Ansicht entfernt.

Hinweis

Um sicherzustellen, dass die Parameterinformationens die QuickInfo ordnungsgemäß formatiert ist, müssen Sie die Eigenschaften auf der Methods-Klasse überschreiben, um die entsprechenden Zeichen zu erzeugen.Die Basis Methods-Klasse akzeptiert eine C#-Format Methodensignatur an.Zeigen Sie die Methods-Klasse für Informationen darüber, wie folgt durchgeführt werden kann.

Unterstützung für die Parameterinformationen aktivieren

Um Parameterinformationens die QuickInfo zu unterstützen, müssen Sie den ShowCompletion benannten Parameter ProvideLanguageServiceAttribute zu truefestlegen. Der Sprachdienst liest den Wert dieses Registrierungseintrags von der EnableCodeSense-Eigenschaft.

Außerdem muss die ParameterInformation-Eigenschaft auf true festgelegt werden, sodass die Parameterinformationens die QuickInfo angezeigt werden kann.

Beispiel

Hier ist ein vereinfachtes Beispiel für das Erkennens der Parameterlisten Zeichen und Festlegen der entsprechenden Trigger. Dieses Beispiel ist nur zur Veranschaulichung. Es wird davon ausgegangen, dass der Scanner eine Methode GetNextToken enthält, die Token aus einer Textzeile identifiziert und zurückgibt. Im Beispielcode wird einfach die Trigger fest, wenn er die Art der rechten Seite des Zeichens wird.

using Microsoft.VisualStudio.Package;
using Microsoft.VisualStudio.TextManager.Interop;

namespace TestLanguagePackage
{
    public class TestScanner : IScanner
    {
        private Lexer lex;
        private const char parameterListStartChar = '(';
        private const char parameterListEndChar   = ')';
        private const char parameterNextChar      = ',';

        public bool ScanTokenAndProvideInfoAboutIt(TokenInfo tokenInfo,
                                                   ref int state)
        {
            bool foundToken = false
            string token = lex.GetNextToken();
            if (token != null)
            {
                foundToken = true;
                char c = token[0];
                if (Char.IsPunctuation(c))
                {
                    tokenInfo.Type = TokenType.Operator;
                    tokenInfo.Color = TokenColor.Keyword;
                    tokenInfo.EndIndex = index;
                    
                    if (c == parameterListStartChar)
                    {
                        tokenInfo.Trigger |= TokenTriggers.ParameterStart;
                    }
                    else if (c == parameterListNextChar)
                    {
                        tokenInfo.Trigger |= TokenTriggers.ParameterNext;
                    else if (c == parameterListEndChar)
                    {
                        tokenInfo.Trigger |= TokenTriggers.ParameterEnd;
                    }
                }
            return foundToken;
        }
    }
}

Die Parameterinformationens-QuickInfo im Parser unterstützt

Die Source-Klasse stellt einige Annahmen über den Inhalt der AuthoringScope und AuthoringSink-Klassen, wenn die Parameterinformationens die QuickInfo angezeigt und aktualisiert werden.

  • Der Parser ist ein angegebenes MethodTip , wenn das Parameterlisten anfangs Zeichen eingegeben werden.

  • Der Speicherort, der im ParseRequest-Objekt angegeben ist, befindet sich unmittelbar hinter dem Parameterlisten anfangs Zeichen. Der Parser muss die Signaturen aller Methodendeklarationen sammeln, die an dieser Position verfügbar sind und speichern sie in einer Liste in der Version des AuthoringScope-Objekts. Diese Liste schließt den Methodentyp Methodenname, Rückgabetyp (oder) sowie eine Liste möglicher Parametern. Diese Liste wird später festgestellt, dass die Methodensignatur oder - unterzeichnungen in der Parameterinformationens die QuickInfo anzeigen.

Der Parser muss dann die Zeile analysiert, die vom ParseRequest-Objekt angegeben wurde, um den Namen der Methode abruft, die eingegeben wurde, sowie in welchem Umfang an dem Benutzer in den Typisierungs parametern ist. Dies wird erreicht, indem den Namen der Methode zur StartName-Methode auf dem AuthoringSink-Objekt übergeben wird und dann die StartParameters-Methode aufgerufen wird, wenn das Parameterlisten anfangs Zeichen analysiert wird, die NextParameter-Methode aufgerufen wird, wenn die Parameterliste nachfolgenden Zeichen analysiert wird, und schließlich die EndParameters-Methode aufgerufen wird, wenn das Parameterlisten abschließendes Zeichen analysiert wird. Die Ergebnisse dieser Methode werden von der Source-Klasse verwendet, um die Parameterinformationens die QuickInfo entsprechend zu aktualisieren.

Beispiel

Im Folgenden finden Sie eine Textzeile, die der Benutzer eingäbe. Die Zahlen unterhalb der Richtung geben an, welche Schritte vom Parser an dieser Position in der Zeile verfolgt wird (anmaßende Analyse von links nach rechts verschoben wird). Die Annahme besteht darin, dass alles vor der Zeile bereits für Methodensignaturen analysiert wurde, einschließlich der „testfunc“ Methodensignatur.

    testfunc("a string",3);
         ^^          ^ ^
         12          3 4

Die Schritte, die vom Parser unternimmt, werden unten erläutert:

  1. Der Parser ruft StartName mit dem Text „testfunc“ an.

  2. Der Parser ruft StartParametersan.

  3. Der Parser ruft NextParameteran.

  4. Der Parser ruft EndParametersan.