Listato 1. Definizione della classe Auto
Imports Microsoft.VisualBasic
Public Class Auto
Private mModello As String
Private mMarca As String
Private mCosto As Decimal
Public Property Modello() As String
Get
Return mModello
End Get
Set(ByVal Valore As String)
mModello = Valore
End Set
End Property
Public Property Marca() As String
Get
Return mMarca
End Get
Set(ByVal Valore As String)
mMarca = Valore
End Set
End Property
Public Property Costo() As Decimal
Get
Return mCosto
End Get
Set(ByVal Valore As Decimal)
mCosto = Valore
End Set
End Property
Public Function CalcolaCostoNoleggio(ByVal numGiorni As Integer) As Decimal
CalcolaCostoNoleggio = Costo * numGiorni
End Function
End Class
Listato 2. La procedura Test() nel dettaglio
Private Sub Test()
Try
Dim pathAsm As String = Server.MapPath("bin/autonoleggio.dll")
Dim extAssembly As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom(pathAsm)
Dim types As Type() = extAssembly.GetTypes()
Dim t As Type = extAssembly.GetType(Server.MapPath("bin/autonoleggio.dll"))
For Each t In types
Response.Write("<strong>Nome</strong><br />")
Response.Write(t.FullName & "<br />")
Response.Write("<strong>Proprietà</strong><br />")
GetProperties(t)
Response.Write("<strong>Metodi</strong><br />")
GetMethods(t)
Next
Catch ex As Exception
Response.Write(ex.Message.ToString())
End Try
End Sub
Listato 3. Il metodo GetProperties
Public Sub GetProperties(ByRef theType As Type)
' Legge le proprietà dell'oggetto
Dim myProperties() As PropertyInfo = theType.GetProperties((BindingFlags.Public Or BindingFlags.Instance))
' Loop che legge le proprietà
Dim PropertyItem As PropertyInfo
For Each PropertyItem In myProperties
With PropertyItem
If theType.IsPublic Then
Response.Write(.Name & " è di tipo " & .PropertyType.ToString & " e ")
' determina se la proprietà può essere letta
If .CanRead Then
Response.Write(" può essere letta e ")
Else
Response.Write("non può essere letta e ")
End If
' determina se la proprietà può essere scritta
If .CanWrite Then
Response.Write(" può essere scritta.")
Else
Response.Write(" non può essere scritta.")
End If
End If
End With
Response.Write("<br>")
Next
End Sub
Listato 4. Il metodo GetMethods
Public Sub GetMethods(ByRef theType As Type)
'Legge i metodi dell'oggetto
Dim myMethods() As MethodInfo = theType.GetMethods
' Loop che legge i metodi
Dim MethodItem As MethodInfo
For Each MethodItem In myMethods
With MethodItem
If theType.IsPublic Then
Response.Write(.Name & " restituisce " & .ReturnType.ToString & "<br />")
' determina se il metodo è pubblico o privato
If .IsPrivate Then
Response.Write(" è privato e non può essere eseguito " & "<br />")
End If
If .IsConstructor Then
Response.Write(" ed è il costruttore per " & theType.Name & "<br />")
End If
Response.Write("<br>")
End If
End With
Next
End Sub