Tjo! Marcus, Jamen, man tackar!Metodnamn som parameter
Är det någon därute som vet om (och hur!) man skulle kunna skicka med ett metodnamn som värde i t.ex. en strukur?
<code>
Structure AdminData
Public Tablename As String
Public Description As String
Public WriteAccess As Boolean
Public GetMethodName As ????
End Structure
Dim _AdminData As AdminData
Private Sub Blabla()
With _AdminData
.TableName="Customers"
.GetMethodName="GetCustomers"
End With
Dim success as Boolean=DoWork(_AdminData)
End Sub
Private Function DoWork(AData As AdminData) As Boolean
Dim W As SomeClass = New SomeClass()
'...och här kommer tricket...
'Hur skulle man kunna göra ett anrop till valfri metod via "GetMethodName"
End Function
</code>
Jag antar att ni fattar vad jag är ute efter. Jag har testat med delegater, men då måste jag ha en instans av "Workerklassen" redan när jag sätter värdet i strukturen.
/MarcusSv: Metodnamn som parameter
För att göra det använder du <b>Reflection</b>. Här har du ett kort, och i princip självförklarande exempel.
Imports System.Reflection
Module Module1
Sub Main()
Dim Worker As New WorkerClass
Dim Info As MethodInfo = _
Worker.GetType().GetMethod("Bar")
If (Not Info Is Nothing) Then
Info.Invoke(Worker, Nothing)
End If
End Sub
End Module
Public Class WorkerClass
Public Sub Bar()
Console.WriteLine("Message from Bar!")
End Sub
End Class
Sv:Metodnamn som parameter
Reflection är tyvärr en av de delar jag inte tittat närmare på i .NET, men jag fick precis en anledning!
/Marcus