处理 XML 文件 (Visual Basic)

编译器为代码中标记生成文档的每个构造生成 ID 字符串。 (有关如何标记代码的信息,请参阅 XML 注释标记。ID 字符串唯一标识构造。 处理 XML 文件的程序可以使用 ID 字符串标识相应的 .NET Framework 元数据/反射项。

XML 文件不是代码的分层表示形式;它是一个平面列表,其中包含每个元素的生成 ID。

编译器在生成 ID 字符串时会遵守以下规则:

  • 字符串不得包含空格。

  • ID 字符串的第一部分用来标识成员的类型,形式是一单个字符后跟一个冒号。 使用以下成员类型。

字符 DESCRIPTION
N 命名空间

不能向命名空间添加文档注释,但在支持的情况下,可以对它们进行 CREF 引用。
T 类型:Class、、ModuleInterfaceStructureEnumDelegate
F 字段:Dim
P 属性: Property (包括默认属性)
M 方法:Sub、、FunctionDeclareOperator
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

另请参阅