CodeElement2.ElementID 속성
요소를 고유하게 식별하는 값을 가져옵니다. Visual C#에는 구현되어 있지 않습니다.
네임스페이스: EnvDTE80
어셈블리: EnvDTE80(EnvDTE80.dll)
구문
‘선언
ReadOnly Property ElementID As String
Get
string ElementID { get; }
property String^ ElementID {
String^ get ();
}
abstract ElementID : string
function get ElementID () : String
속성 값
형식: System.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의 코드 요소에서 파생됩니다. 예를 들어, CodeClass2는 CodeClass에서 파생되고 CodeElement2는 CodeElement에서 파생됩니다. Visual Studio에서는 내부적으로 두 어셈블리의 모든 코드 요소가 CodeElement2로 다시 캐스팅됩니다. 따라서, 논리적으로 볼 때 이는 마치 CodeClass2가 궁극적으로 CodeElement2에서 파생되는 것과 같습니다.
그러나 이들 두 요소는 실제로는 두 개의 개별 상속 계층 구조에 있으므로 런타임에 바인딩할 때 Code*2 개체에서 CodeElement2 메서드를 찾을 수 없습니다. EnvDTE는 근본적으로 동일하게 작동하지만 전처리기 매크로를 사용하면 인터페이스를 정의하여 상속된 메서드가 변환이 있는 관련된 모든 인터페이스에 명시적으로 정의될 수 있습니다. EnvDTE80 인터페이스는 전처리기 문을 사용하지 않는 경우에만 비슷한 상속 스키마를 사용하여 정의됩니다. 이 해결 방법은 속성이 중복되지 않으므로 보다 세련된 방법이지만 런타임에 바인딩하는 경우 속성을 호출할 수 없다는 단점이 있습니다. 이 문제를 해결하려면 호출하기 전에 개체를 CodeElement2 인터페이스로 명시적으로 캐스팅해야 합니다.
또한 클래스, 구조체, 함수, 특성, 대리자 등의 코드 모델 요소를 특정한 방식으로 편집한 후에는 요소의 값이 명확하지 않을 수 있습니다. 즉, 요소의 값이 항상 같다고 할 수 없습니다. 자세한 내용은 코드 모델을 사용하여 코드 검색(Visual Basic)의 "코드 모델 요소 값이 변경될 수 있음" 단원을 참조하십시오.
.NET Framework 보안
- 직접 실행 호출자의 경우 완전히 신뢰합니다. 이 멤버는 부분적으로 신뢰할 수 있는 코드에서 사용할 수 없습니다. 자세한 내용은 부분 신뢰 코드에서 라이브러리 사용을 참조하십시오.