CodeElement2.ElementID - свойство
Получает значение, однозначно определяющее элемент. Не реализовано в Visual С#.
Пространство имен: 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 представляет собой значение, рассчитываемое на основе имени элемента и других данных, однозначно определяющих элемент. Конкретный алгоритм вычисления идентификатора зависит от используемого языка.
Этот идентификатор используется клиентами модели кода для отслеживания элементов без сохранения ссылок. Он включается в события модели кода, чтобы сообщать клиентскому коду об изменениях элемента. При их создании предоставляются новые идентификаторы.
Значение свойства ElementID не следует считать постоянным. Существует вероятность его изменения при каждом создании модели кода для проекта, а также в течение текущего сеанса. Событие ElementChanged происходит при каждом изменении ElementID.
Примечание
Вызов 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.
Однако, поскольку два элемента в действительности находятся в двух отдельных иерархиях наследования, средство поздней привязки не может искать методы CodeElement2 в объектах Code*2.EnvDTE работает по существу одинаково, но использование макросов препроцессора позволяет определять интерфейсы таким образом, чтобы унаследованные методы явным образом определялись для всех связанных интерфейсов, для которых существуют преобразования. Интерфейсы EnvDTE80 определяются с использованием аналогичной схемы наследования, только без использования операторов препроцессора.Это решение является более элегантным, поскольку оно избавляет от необходимости использования лишних свойств, но следствием является невозможность применения вызовов свойств с поздним связыванием.Чтобы обойти это ограничение, необходимо явным образом привести объект к интерфейсу CodeElement2, прежде чем производить вызов.
Кроме того, значения элементов модели кода, таких как классы, структуры, функции, атрибуты, делегаты и т.п., после внесения некоторых изменений могут стать недетерминированными, иными словами, нельзя рассчитывать, что их значения не будут изменяться.Дополнительные сведения см. в разделе "Значения элементов модели кода могут изменяться" раздела Практическое руководство. Поиск кода при помощи модели кода (Visual Basic).
Безопасность платформы .NET Framework
- Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Дополнительные сведения см. в разделе Использование библиотек из не вполне надежного кода.
См. также
Ссылки
Другие ресурсы
Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации
Практическое руководство. Поиск кода при помощи модели кода (Visual Basic)
Практическое руководство. Поиск кода при помощи модели кода (Visual C#)