CodeElement には、CodeElement のコレクションである Member プロパティがあります。CodeElement には Kind プロパティがあり、それによってどのような種類のメンバーについて話しているかを知ることができます。次に、各メンバーを適切なインターフェイスにキャストして、見回すことができます。ほとんどのサブクラスには、探している情報を含む Type プロパティがあります。
モジュールのマクロエディターでこれを入力しました:
Public Sub DisplayStuff()
Dim objTextSel As TextSelection
Dim objCodeCls As CodeClass
objTextSel = CType(DTE.ActiveDocument.Selection, TextSelection)
objCodeCls = CType(objTextSel.ActivePoint.CodeElement(vsCMElement.vsCMElementClass), CodeClass)
If objCodeCls Is Nothing Then
MsgBox("Please launch this macro when the cursor is within a class")
Exit Sub
End If
For Each elt As CodeElement2 In objCodeCls.Members
Select Case elt.Kind
Case vsCMElement.vsCMElementVariable
Dim v As CodeVariable2 = CType(elt, CodeVariable2)
MsgBox(v.Name & " is a variable of type " & v.Type.AsString)
Case vsCMElement.vsCMElementProperty
Dim p As CodeProperty2 = CType(elt, CodeProperty2)
MsgBox(p.Name & " is of type " & p.Type.AsString)
End Select
Next
End Sub
エディター内でカーソルがある場所にあるクラスを取得し、任意のフィールドまたはプロパティの型情報を表示します。