다음을 통해 공유


CodeElement2.ElementID 속성

요소를 고유하게 식별하는 값을 가져옵니다. Visual C#에는 구현되어 있지 않습니다.

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

구문

‘선언
ReadOnly Property ElementID As String
string ElementID { get; }
property String^ ElementID {
    String^ get ();
}
abstract ElementID : string with get
function get ElementID () : String

속성 값

형식: String
요소의 고유한 값을 나타내는 문자열입니다.

설명

ElementID 속성은 요소 이름과 요소를 고유하게 식별하는 기타 정보를 기반으로 계산되는 값입니다. ID의 정확한 계산은 언어에 따라 다를 수 있습니다.

이 ID는 참조를 유지하지 않고도 요소를 계속 추적할 수 있도록 코드 모델 클라이언트에 사용됩니다. 이 ID는 변경되는 요소를 클라이언트 코드에 알리기 위해 코드 모델 이벤트에 포함됩니다. 작성 시에는 새 ID가 제공됩니다.

ElementID 속성의 값은 영구적인 것으로 간주하지 말아야 합니다. 이 값은 프로젝트에 대한 코드 모델을 만들 때마다 변경될 수 있고 현재 세션에서도 변경될 수 있습니다. ElementID가 변경될 때마다 ElementChanged 이벤트가 발생합니다.

참고

런타임에 바인딩된 RenameSymbol 또는 ElementID는 호출할 수 없습니다. 예를 들어, DTE.ActiveDocument.ProjectItem.FileCodeModel.CodeElements.Item("Class1").RenameSymbol("Class2")입니다. 호출하기 전에 개체를 CodeElement2 인터페이스로 명시적으로 캐스팅해야 합니다.

EnvDTE80의 코드 요소(이하 Code*2 개체)는 EnvDTE의 코드 요소에서 파생됩니다. 예를 들어, CodeClass2CodeClass에서 파생되고 CodeElement2CodeElement에서 파생됩니다. Visual Studio에서는 내부적으로 두 어셈블리의 모든 코드 요소가 CodeElement2로 다시 캐스팅됩니다.따라서, 논리적으로 볼 때 이는 마치 CodeClass2가 궁극적으로 CodeElement2에서 파생되는 것과 같습니다.

그러나 이들 두 요소는 실제로는 두 개의 개별 상속 계층 구조에 있으므로 런타임에 바인딩할 때 Code*2 개체에서 CodeElement2 메서드를 찾을 수 없습니다.EnvDTE기본적으로 동일 하 게 하지만 전처리기 매크로 사용 하면 인터페이스를 정의 하 여 상속 된 메서드가 작동 모든 변환이 있는 관련된 인터페이스에 명시적으로 정의 됩니다.EnvDTE80인터페이스는 전처리기 문 사용 하지 않고만 비슷한 상속 스키마를 사용 하 여 정의 됩니다.이 해결 방법은 속성이 중복되지 않으므로 보다 세련된 방법이지만 런타임에 바인딩하는 경우 속성을 호출할 수 없다는 단점이 있습니다.이 문제를 해결하려면 호출하기 전에 개체를 CodeElement2 인터페이스로 명시적으로 캐스팅해야 합니다.

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

.NET Framework 보안

참고 항목

참조

CodeElement2 인터페이스

EnvDTE80 네임스페이스

기타 리소스

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

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

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