Imports System.Collections
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Reflection
Imports System.ComponentModel.DataAnnotations
Imports Microsoft.VisualBasic
Imports Newtonsoft.Json.Linq
Imports Newtonsoft.Json.Converters
Imports Newtonsoft.Json.Serialization
Public Class ConsoleObject
Public Sub ReflectionMethod(ByVal stringParam As String, ByVal enumParam As Days)
Console.WriteLine(String.Format("Executed:ReflectionMethod | stringParam : {0}; enumParam : {1}", stringParam, enumParam))
Public Sub InvokeMethodWithJsonArguments(ByVal consoleObject As Object, ByVal methodName As String, ByVal inputJson As String)
Dim lstObjects As List(Of JToken) = JsonConvert.DeserializeObject(Of List(Of JToken))(inputJson)
Dim method As MethodInfo = consoleObject.GetType.GetMethod(methodName)
Dim parameterTypes = method.GetParameters().Select(Function(p) p.ParameterType)
Dim args = lstObjects.Zip(parameterTypes, Function(first, second) first.ToObject(second)).ToArray()
method.Invoke(consoleObject, args)
Dim consoleObject as Object = new ConsoleObject()
Dim inputJson As String = "['Sample Input',2]"
InvokeMethodWithJsonArguments(consoleObject, "ReflectionMethod", inputJson)
Console.WriteLine("Environment version: " & Environment.Version.ToString())
Console.WriteLine("Json.NET version: " & GetType(JsonSerializer).Assembly.FullName)
Console.WriteLine("Unhandled exception: ")