다음을 통해 공유


CodeClass2.InfoLocation 속성

코드 모델 기능을 가져옵니다.

네임스페이스:  EnvDTE80
어셈블리:  EnvDTE80(EnvDTE80.dll)

구문

‘선언
ReadOnly Property InfoLocation As vsCMInfoLocation
    Get
vsCMInfoLocation InfoLocation { get; }
property vsCMInfoLocation InfoLocation {
    vsCMInfoLocation get ();
}
abstract InfoLocation : vsCMInfoLocation
function get InfoLocation () : vsCMInfoLocation

속성 값

형식: EnvDTE.vsCMInfoLocation
vsCMInfoLocation 상수 값입니다.

구현

CodeClass.InfoLocation

설명

InfoLocation 속성이 vsCMInfoLocationProject를 반환하면 속성 설정, StartPoint 가져오기, EndPoint 가져오기 등의 작업을 수행할 수 있습니다. 함수에서 해당 함수의 형식으로, 클래스에서 해당 클래스의 기본 클래스로 이동하는 경우처럼 하나의 코드 모델 개체(A)에서 다른 코드 모델 개체(B)로 이동할 경우, 코드 모델 개체 B에 대한 정의가 다른 프로젝트에 있으면 이 개체는 vsCMInfoLocationExternal 형식이 될 수 있습니다. 처리 방식은 코드 모델 구현 방식, 개체 B의 프로젝트가 개체 A의 프로젝트와 같은 언어로 구현되었는지 여부 등에 따라 달라집니다.

InfoLocation에서 vsCMInfoLocationExternal을 반환하면 메타데이터나 고정된 소스, 또는 DLL 검사를 통해서만 정보를 사용할 수 있습니다. StartPointEditPoint를 가져올 수는 있지만 문서를 편집할 수는 없습니다. 즉, 속성을 설정하거나 코드 요소에 사용되는 텍스트를 수정할 수 없습니다.

InfoLocation에서 vsCMInfoLocationNone을 반환하면 이름이 있는 코드 모델 개체만 사용할 수 있습니다. 또한 일부 경우에는 소스 코드의 컨텍스트를 기준으로 이름이 클래스인지 또는 인터페이스인지 여부를 알 수 있습니다. 그러나 이 경우 코드 모델이 해당 이름을 유용한 정보로 확인할 수 없으므로 개체가 쓸모 없게 됩니다.

참고

클래스, 구조체, 함수, 특성, 대리자 등의 코드 모델 요소를 특정한 방식으로 편집한 후에는 요소의 값이 명확하지 않을 수 있습니다. 즉, 요소의 값이 항상 같다고 할 수 없습니다. 자세한 내용은 코드 모델을 사용하여 코드 검색(Visual Basic)의 "코드 모델 요소 값이 변경될 수 있음" 단원을 참조하십시오.

예제

[Visual Basic]

Sub InfoLocationExample(ByVal dte As DTE2)
    ' Before running this example, open a code document from a project
    ' and place the insertion point inside a class definition.
    Try
        ' Retrieve the CodeClass at the insertion point.
        Dim sel As TextSelection = _
            CType(dte.ActiveDocument.Selection, TextSelection)
        Dim cls As CodeClass = _
            CType(sel.ActivePoint.CodeElement( _
            vsCMElement.vsCMElementClass), CodeClass)

        ' Display the class's location.
        MsgBox(cls.Name & "'s InfoLocation value is " & _
            cls.InfoLocation.ToString())

        Dim cm As CodeModel = _
            cls.ProjectItem.ContainingProject.CodeModel
        Dim name As String = ConvertFullName(cm, "System.Object")
        Dim obj As CodeType = cm.CodeTypeFromFullName(name)

        ' Display System.Object's location.
        MsgBox(obj.FullName & "'s InfoLocation value is " & _
            obj.InfoLocation.ToString())
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Function ConvertFullName(ByVal cm As CodeModel, _
    ByVal fullName As String) As String
    ' Convert a .NET type name into a C++ type name.
    If (cm.Language = CodeModelLanguageConstants.vsCMLanguageVC) Or _
        (cm.Language = CodeModelLanguageConstants.vsCMLanguageMC) Then
        Return fullName.Replace(".", "::")
    Else
        Return fullName
    End If
End Function

[C#]

public void InfoLocationExample(DTE2 dte)
{
    // Before running this example, open a code document from a project
    // and place the insertion point inside a class definition.
    try
    {
        // Retrieve the CodeClass at the insertion point.
        TextSelection sel = 
            (TextSelection)dte.ActiveDocument.Selection;
        CodeClass cls = 
            (CodeClass)sel.ActivePoint.get_CodeElement(
            vsCMElement.vsCMElementClass);

        // Display the class's location.
        MessageBox.Show(cls.Name + "'s InfoLocation value is " + 
            cls.InfoLocation.ToString());

        CodeModel cm = cls.ProjectItem.ContainingProject.CodeModel;
        string name = ConvertFullName(cm, "System.Object");
        CodeType obj = cm.CodeTypeFromFullName(name);

        // Display System.Object's location.
        MessageBox.Show(obj.FullName + "'s InfoLocation value is " + 
            obj.InfoLocation.ToString());
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

string ConvertFullName(CodeModel cm, string fullName)
{
    // Convert a .NET type name into a C++ type name.
    if ((cm.Language == CodeModelLanguageConstants.vsCMLanguageVC) || 
        (cm.Language == CodeModelLanguageConstants.vsCMLanguageMC))
        return fullName.Replace(".", "::");
    else
        return fullName;
}

.NET Framework 보안

  • 직접 실행 호출자의 경우 완전히 신뢰합니다. 이 멤버는 부분적으로 신뢰할 수 있는 코드에서 사용할 수 없습니다. 자세한 내용은 부분 신뢰 코드에서 라이브러리 사용을 참조하십시오.

참고 항목

참조

CodeClass2 인터페이스

InfoLocation 오버로드

EnvDTE80 네임스페이스

기타 리소스

방법: 자동화 개체 모델 코드의 예제 컴파일 및 실행

코드 모델을 사용하여 코드 검색(Visual Basic)

코드 모델을 사용하여 코드 검색(Visual C#)