Partilhar via


Informações de parâmetro de IntelliSense (estrutura de pacote gerenciado)

Informações do parâmetro IntelliSense é uma dica de ferramenta que exibe a assinatura de um método quando o usuário digita a lista de parâmetros iniciar caractere (normalmente um parêntese aberto) para a lista de parâmetros de método. Como cada parâmetro é inserido e o separador de parâmetro (geralmente uma vírgula) é digitado, a dica de ferramenta é atualizada para mostrar o próximo parâmetro em negrito.

As classes do framework (MPF) de pacote gerenciado oferecem suporte para gerenciar a dica de ferramenta de informações de parâmetro. O analisador deve detectar o parâmetro Iniciar, parâmetro a seguir, e caracteres de final de parâmetro e ele devem fornecer uma lista de assinaturas de método e seus parâmetros associados.

Implementação

O analisador deve definir o valor de disparador ParameterStart é definido quando encontra um caractere de início de lista de parâmetro (geralmente um parêntese aberto). Ela deve ser definida uma ParameterNext disparar quando encontra um separador de parâmetro (geralmente uma vírgula). Isso faz com que uma dica de ferramenta informações do parâmetro seja atualizada e mostrar o próximo parâmetro em negrito. O analisador deve definir o valor de disparador ParameterEnd quando se encontra o caractere de final de lista de parâmetro (geralmente um parêntese de fechamento).

O ParameterStart valor disparador inicia uma chamada para o MethodTip método, que por sua vez chama o ParseSource analisador de método com um motivo de análise de MethodTip. Se o analisador determina que o identificador antes que a lista de parâmetros iniciar caractere é um nome de método reconhecido, ele retorna uma lista de assinaturas de método no correspondentes a AuthoringScope objeto. Se nenhuma assinatura do método foram encontrada, a dica de ferramenta de informações de parâmetro é exibida com a primeira assinatura na lista. Essa dica de ferramenta é atualizada conforme mais da assinatura é digitado. Quando o caractere de final de lista de parâmetro é digitado, a dica de ferramenta de informações de parâmetro é removida da exibição.

Dica

Para garantir que a dica de ferramenta de informações de parâmetro está formatada corretamente, você deve substituir as propriedades sobre o Methods classe para fornecer os caracteres apropriados.Base da Methods supõe que a classe C#-assinatura de método de estilo.Consulte o Methods classe para obter detalhes sobre como isso pode ser feito.

Habilitando o suporte para as informações de parâmetro

Para oferecer suporte a dica de ferramenta informações do parâmetro, você deve definir o ShowCompletion chamado parâmetro da ProvideLanguageServiceAttribute para true. O serviço de linguagem lê o valor desta entrada do registro a partir do EnableCodeSense propriedade.

Além disso, o ParameterInformation propriedade deve ser definida como true a dica de ferramenta de informações de parâmetro a ser mostrado.

Exemplo

Aqui está um exemplo simplificado de detectar os caracteres da lista de parâmetro e definindo os disparadores apropriados. Este exemplo é apenas para fins ilustrativos. Ele assume que o scanner contém um método GetNextToken que identifica e retorna tokens a partir de uma linha de texto. O exemplo de código simplesmente define os disparadores, sempre que ele vê o tipo certo de caractere.

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

O parâmetro Info ToolTip de suporte no analisador

O Source classe faz algumas suposições sobre o conteúdo da AuthoringScope e AuthoringSink classes quando a dica de ferramenta de informações de parâmetro é exibida e atualizada.

  • O analisador é dado MethodTip quando o caractere de início da lista de parâmetro é digitado.

  • Localização fornecida ParseRequest objeto é imediatamente após o caractere de iniciar a lista de parâmetros. O analisador deve coletar as assinaturas de todas as declarações de método disponíveis em posicionar e armazená-los em uma lista em sua versão do AuthoringScope objeto. Essa lista inclui o nome do método, tipo de método (ou tipo de retorno) e uma lista de possíveis parâmetros. Posteriormente, esta lista é pesquisada para a assinatura do método ou assinaturas para exibir na dica de ferramenta informações do parâmetro.

O analisador, em seguida, deve analisar a linha especificada pelo ParseRequest o objeto para coletar o nome do método sendo inseridos, bem como distância percorrida o usuário está em digitar parâmetros. Isso é conseguido passando o nome do método para o StartName método no AuthoringSink objeto e, em seguida, chamar o StartParameters método quando a lista de parâmetros iniciar caractere é analisado, chamando o NextParameter método quando o parâmetro lista próximo caractere é analisado e finalmente chamando o EndParameters método quando o caractere de final de lista de parâmetro é analisado. Os resultados dessas chamadas de método são usados pela Source classe para atualizar a dica de ferramenta informações do parâmetro apropriadamente.

Exemplo

Aqui está uma linha de texto, que o usuário poderia inserir. Os números abaixo da linha indicam qual etapa será executada pelo analisador nessa posição na linha (supondo que a esquerda de movimentações de análise para a direita). O pressuposto é que tudo antes da linha já foi analisado para assinaturas de método, incluindo a assinatura do método "testfunc".

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

As etapas que o analisador leva estão descritas abaixo:

  1. As chamadas do analisador StartName com o texto "testfunc".

  2. As chamadas do analisador StartParameters.

  3. As chamadas do analisador NextParameter.

  4. As chamadas do analisador EndParameters.