다음을 통해 공유


CodeAttribute2.InfoLocation 속성

코드 모델을 가져옵니다.

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

구문

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

속성 값

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

설명

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

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

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

참고

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

예제

다음 예제에서는 현재 클래스에 새 네임스페이스와 특성을 만들고 특성의 일부 속성을 나열합니다.

public void CreateClassAndAttrib(DTE2 applicationObject)
{
    // Before running, load or create a project.
    FileCodeModel2 fcm2 = GetFileCodeModel(applicationObject);
    CodeAttribute2 cmAttribute;
    CodeClass2 cmClass;
    String msg = null;

    if (fcm2 != null)
    {
        CodeNamespace cmNamespace;
        // Try to create a new namespace.
        try
        {
            cmNamespace = fcm2.AddNamespace("CMNamespace", -1);
            // If successful, create the other code elements.
            if (cmNamespace != null)
            {
                cmClass = (CodeClass2)cmNamespace.AddClass("ANewClass", 
                -1, null, null, vsCMAccess.vsCMAccessPrivate);
                cmAttribute = (CodeAttribute2)cmClass.AddAttribute
                ("NewAttribute", "AttributeValue", -1);
                msg += "InfoLocation: " + cmAttribute.InfoLocation + 
                Environment.NewLine;
                msg += "IsCodeType?: " + cmAttribute.IsCodeType + 
                Environment.NewLine;
                msg += "Kind: " + cmAttribute.Kind + 
                Environment.NewLine;
                MessageBox.Show(msg);                       
            }
            else
            {
                MessageBox.Show("Cannot continue - no filecodemodel 
                available.");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("ERROR: " + ex);
        }
    }
}

public FileCodeModel2 GetFileCodeModel(DTE2 applicationObject)
{
    // Returns the FileCodeModel object of the active 
    // window.
    TextWindow txtWin = 
    (TextWindow)applicationObject.ActiveWindow.Object;
    FileCodeModel2 fcm2;
    if (txtWin != null)
    {
        try
        {
             fcm2 = (FileCodeModel2)txtWin.Parent.
             ProjectItem.FileCodeModel;
             return fcm2;
        }
        catch (Exception ex)
        {
             MessageBox.Show("ERROR: " + ex);
             return null;
        }
    }
    else
        return null;
}

.NET Framework 보안

참고 항목

참조

CodeAttribute2 인터페이스

EnvDTE80 네임스페이스

기타 리소스

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

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

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