다음을 통해 공유


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.