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