共用方式為


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。 所以舉例來說,邏輯上它就像是最終會衍生自 CodeElement2CodeClass2

由於這兩個項目在事實上位於兩個不同的繼承階層架構中,不過,晚期繫結者無法查閱 Code*2 物件上的 CodeElement2 方法。 EnvDTE 基本上以相同方式運作,但使用前置處理器巨集使介面的定義能讓繼承的方法會在存在轉換的所有相關介面上明確定義。 EnvDTE80 介面的定義會使用相似的繼承配置進行,而不需要使用前置處理器陳述式。 由於這個方案會排除多餘的屬性,所以會是個更雅緻的方案,但是結果則會是無法在晚期繫結呼叫這些屬性。 若要解決這個問題,請明確地將這個物件轉換為 CodeElement2 介面之後才進行呼叫。

另外像是類別、建構、函式、屬性 (Attribute)、委派 (Delegate) 等這些程式碼模型元素的值,在經過特定方式的編輯之後也可以為非決定性,即表示這些值將不再固定。 如需詳細資訊,請參閱使用程式碼模型探索程式碼 (Visual Basic) 的<程式碼模型項目值可以變更>一節。

.NET Framework 安全性

請參閱

參考

CodeElement2 介面

EnvDTE80 命名空間

其他資源

HOW TO:編譯和執行 Automation 物件模型程式碼範例

使用程式碼模型探索程式碼 (Visual Basic)

使用程式碼模型探索程式碼 (Visual C#)