|
|
|
|
@ -5,6 +5,7 @@ Namespace Runtime
|
|
|
|
|
Public Class Callable
|
|
|
|
|
|
|
|
|
|
Dim method As MethodInfo
|
|
|
|
|
Dim parameters As ParameterInfo()
|
|
|
|
|
|
|
|
|
|
Public ReadOnly Property name As String
|
|
|
|
|
Get
|
|
|
|
|
@ -14,6 +15,7 @@ Namespace Runtime
|
|
|
|
|
|
|
|
|
|
Sub New(method As MethodInfo)
|
|
|
|
|
Me.method = method
|
|
|
|
|
Me.parameters = method.GetParameters
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Sub New(math1 As Func(Of Double, Double))
|
|
|
|
|
@ -25,7 +27,21 @@ Namespace Runtime
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Public Function Evaluate(params As Object()) As Object
|
|
|
|
|
|
|
|
|
|
Dim args As New List(Of Object)
|
|
|
|
|
|
|
|
|
|
For i As Integer = 0 To parameters.Length - 1
|
|
|
|
|
If i >= params.Length Then
|
|
|
|
|
If parameters(i).IsOptional Then
|
|
|
|
|
args.Add(parameters(i).DefaultValue)
|
|
|
|
|
Else
|
|
|
|
|
Throw New InvalidExpressionException
|
|
|
|
|
End If
|
|
|
|
|
Else
|
|
|
|
|
args.Add(CTypeDynamic(params(i), parameters(i).ParameterType))
|
|
|
|
|
End If
|
|
|
|
|
Next
|
|
|
|
|
|
|
|
|
|
Return method.Invoke(Nothing, args.ToArray)
|
|
|
|
|
End Function
|
|
|
|
|
End Class
|
|
|
|
|
End Namespace
|