共用方式為


IntelliSense 參數資訊 (管理的套件架構)

IntelliSense 參數資訊會顯示方法的簽章,當使用者輸入的參數清單的工具提示啟動方法的參數] 清單中的字元 (通常是左括號)。 在輸入每個參數和型別參數分隔符號 (通常是逗點),工具提示會更新以顯示下一個參數以粗體顯示。

受管理的套件的架構 (MPF) 類別提供支援,來管理參數資訊工具提示。 剖析器必須偵測參數啟動參數接下來,和參數結尾的字元,而且它必須提供的方法簽名碼與它們相關聯的參數清單。

實作

剖析器應該設定觸發程序值ParameterStart發現參數清單開始字元 (通常左括號) 的時候設定。 它應該設定ParameterNext發現參數分隔符號 (通常是逗點) 的時候,觸發程序。 這會導致更新,並顯示下一個參數以粗體顯示的參數資訊工具提示。 剖析器應該設定觸發程序值ParameterEnd時如果尋找的參數清單尾端字元 (通常左右括號)。

ParameterStart引動程序值初始化呼叫MethodTip方法,依序呼叫ParseSource方法的剖析原因的剖析器MethodTip。 如果剖析器會判斷參數清單開始的字元之前的識別項是可辨識的方法名稱,則會傳回清單中的方法簽名碼比對AuthoringScope物件。 如果找不到任何的方法簽名碼參數資訊工具提示會顯示在清單中的第一個簽章。 當多個簽名碼為型別,則更新此工具提示。 參數清單尾端字元鍵入後,會從檢視移除參數資訊工具提示。

注意事項注意事項

為了確保具有正確的格式參數資訊工具提示,您必須覆寫的屬性上Methods類別提供適當的字元。基底Methods類別會假設 C#-樣式方法簽名碼。請參閱Methods如需如何完成的類別。

啟用支援參數資訊

若要支援的參數資訊工具提示,您必須設定ShowCompletion的參數名稱ProvideLanguageServiceAttribute到true。 語言服務會讀取此登錄項目的值從EnableCodeSense屬性。

此外, ParameterInformation屬性必須設定為 [ true顯示參數資訊工具提示。

範例

以下是簡單的範例偵測參數清單中的字元,並設定適當的觸發程序。 這個範例是僅供說明。 它會假設您的掃描器包含方法GetNextToken的識別,並傳回從文字行的語彙基元。 範例程式碼時看到正確的字元種類,只需設定觸發程序。

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;
        }
    }
}

剖析器支援參數資訊工具提示

Source類別產生的內容有些預設想法AuthoringScopeAuthoringSink類別時,會顯示參數資訊工具提示,並將其更新。

  • 指定剖析器MethodTip當參數清單開始鍵入文字。

  • 給定的位置ParseRequest物件是之後的參數清單開始的字元。 剖析器必須在所有方法宣告的簽章的位置,並將它們儲存在您的版本中的清單來收集AuthoringScope物件。 這份清單包含方法名稱、 方法型別 (或傳回型別),以及可能的參數清單。 若要顯示參數資訊工具提示中的簽章的方法簽名碼稍後搜尋這份清單。

剖析器必須接著剖析由指定的行ParseRequest來蒐集輸入的方法,以及程度以及使用者名稱的物件是在 [輸入參數。 這是藉由傳遞至方法的名稱StartName上的方法AuthoringSink物件,然後呼叫StartParameters剖析方法的參數清單開始的字元時,呼叫NextParameter方法剖析參數清單的下一個字元時,以及最後呼叫EndParameters方法的參數清單尾端字元剖析時。 這些方法呼叫的結果由Source類別,以適當地更新 [參數資訊工具提示。

範例

以下是文字的使用者可輸入行。 以下行數字表示 (假設剖析移動從左到右) 的行中的該位置的剖析器不會採取哪些步驟。 這裡的假設是一行前的所有項目已經已剖析的方法簽章,包括"testfunc"的方法簽章。

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

剖析器所需的步驟概述如下:

  1. 剖析器呼叫StartName以"testfunc"的文字。

  2. 剖析器呼叫StartParameters

  3. 剖析器呼叫NextParameter

  4. 剖析器呼叫EndParameters