編譯器會為每個用於生成文件的標記建構產生識別字串。 (如需如何標記程式代碼的資訊,請參閱 XML 批註標記。)標識符字串會唯一識別 建構。 處理 XML 檔案的程式可以使用識別符字串來識別對應的 .NET Framework 元數據/反映專案。
XML 檔案不是您程式代碼的階層表示法;它是具有每個元素所產生標識碼的一般清單。
編譯程式會在產生標識符字串時觀察下列規則:
字串中沒有空格符。
ID字串的第一部分標識出成員的種類,形式為一個單字符後跟一個冒號。 使用下列成員類型。
| 角色 | 說明 |
|---|---|
| N | 命名空間 (namespace) 您無法將文件註解新增到命名空間中,但在支援的情況下,您可以對它們進行 CREF 參考。 |
| T | 類型:Class、、Module、InterfaceStructure、 EnumDelegate |
| F | 欄位:Dim |
| P | 屬性: Property (包括預設屬性) |
| M | 方法: Sub、、 Function、 Declare、 Operator |
| E | 事件:Event |
| ! | 錯誤字串 字串的其餘部分會提供錯誤的相關信息。 Visual Basic 編譯程式會針對無法解析的鏈接產生錯誤資訊。 |
第二個部分
String是項目的完全限定名稱,從命名空間的根目錄開始。 項目的名稱、其封入類型(s)和命名空間會以句號分隔。 如果專案本身的名稱包含句點,則會以數字符號 (#) 取代它們。 假設沒有任何專案在其名稱中直接有數字符號。 例如,建構函式的完整名稱String會是System.String.#ctor。對於屬性和方法,如果方法有自變數,則括弧括住的自變數清單會隨之而來。 如果沒有參數,就不會有括弧。 參數會以逗號分隔。 每個自變數的編碼方式會直接遵循在 .NET Framework 簽章中編碼的方式。
範例
下列程式代碼示範如何產生類別及其成員的標識符字串。
Namespace SampleNamespace
''' <summary>Signature is
''' "T:SampleNamespace.SampleClass"
''' </summary>
Public Class SampleClass
''' <summary>Signature is
''' "M:SampleNamespace.SampleClass.#ctor"
''' </summary>
Public Sub New()
End Sub
''' <summary>Signature is
''' "M:SampleNamespace.SampleClass.#ctor(System.Int32)"
''' </summary>
Public Sub New(ByVal i As Integer)
End Sub
''' <summary>Signature is
''' "F:SampleNamespace.SampleClass.SampleField"
''' </summary>
Public SampleField As String
''' <summary>Signature is
''' "F:SampleNamespace.SampleClass.SampleConstant"
''' </summary>
Public Const SampleConstant As Integer = 42
''' <summary>Signature is
''' "M:SampleNamespace.SampleClass.SampleFunction"
''' </summary>
Public Function SampleFunction() As Integer
End Function
''' <summary>Signature is
''' "M:SampleNamespace.SampleClass.
''' SampleFunction(System.Int16[],System.Int32[0:,0:])"
''' </summary>
Public Function SampleFunction(
ByVal array1D() As Short,
ByVal array2D(,) As Integer) As Integer
End Function
''' <summary>Signature is
''' "M:SampleNamespace.SampleClass.
''' op_Addition(SampleNamespace.SampleClass,
''' SampleNamespace.SampleClass)"
''' </summary>
Public Shared Operator +(
ByVal operand1 As SampleClass,
ByVal operand2 As SampleClass) As SampleClass
Return Nothing
End Operator
''' <summary>Signature is
''' "P:SampleNamespace.SampleClass.SampleProperty"
''' </summary>
Public Property SampleProperty() As Integer
Get
End Get
Set(ByVal value As Integer)
End Set
End Property
''' <summary>Signature is
''' "P:SampleNamespace.SampleClass.Item(System.String)"
''' </summary>
Default Public ReadOnly Property Item(
ByVal s As String) As Integer
Get
End Get
End Property
''' <summary>Signature is
''' "T:SampleNamespace.SampleClass.NestedClass"
''' </summary>
Public Class NestedClass
End Class
''' <summary>Signature is
''' "E:SampleNamespace.SampleClass.SampleEvent(System.Int32)"
''' </summary>
Public Event SampleEvent As SampleDelegate
''' <summary>Signature is
''' "T:SampleNamespace.SampleClass.SampleDelegate"
''' </summary>
Public Delegate Sub SampleDelegate(ByVal i As Integer)
End Class
End Namespace