处理 XML 文件 (Visual Basic)
编译器为代码中被标记为生成文档的每一个构造生成一个 ID 字符串。 (有关如何标记代码的信息,请参见 建议的用于文档注释的 XML 标记 (Visual Basic)。)ID 字符串唯一地标识构造。 处理 XML 文件的程序可以使用 ID 字符串标识相应的 .NET Framework 元数据/反射项。
XML 文件不是代码的分层表示形式,它是一个平面列表,每一个元素有一个生成的 ID。
编译器在生成 ID 字符串时遵循下列规则:
不在字符串中放置空白。
ID 字符串的第一部分通过单个字符后跟一个冒号来标识被标识成员的种类。 使用下列成员类型。
字符 |
说明 |
N |
命名空间 不可将文档注释添加到命名空间中,但是可以对它们进行 CREF 引用(在受支持的位置)。 |
T |
类型:Class、Module、Interface、Structure、Enum、Delegate |
F |
字段:Dim |
P |
属性:Property(包括默认属性) |
M |
方法:Sub、Function、Declare、Operator |
E |
事件:Event |
! |
错误字符串 字符串的其余部分会提供有关此错误的信息。 Visual Basic 编译器为无法解析的链接生成错误信息。 |
String 的第二部分是项的完全限定名,从命名空间的根开始。 项的名称、其封闭类型和命名空间以句点分隔。 如果项的名称本身包含句点,则用数字符号 (#) 替换这些句点。 假设任何项的名称中都未直接包含数字符号。 例如,String 构造函数的完全限定名是 System.String.#ctor。
对于属性和方法,如果该方法带参数,则将其后的参数列表括在括号中。 如果没有参数,则没有括号。 多个参数以逗号分隔。 每个参数的编码都直接遵循它在 .NET Framework 签名中的编码方法。
示例
下面的代码演示如何生成类及其成员的 ID 字符串。
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