Mega Code Archive

 
Categories / VB.Net / Reflection
 

Invoking a method with ByRef parameters

Imports System Imports System.Reflection Imports System.IO Public Class TestClass     Public Name As String     Private values() As [Object] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}     Default Public Property Item(ByVal index As Integer) As [Object]         Get             Return values(index)         End Get         Set(ByVal Value As [Object])             values(index) = Value         End Set     End Property     Public ReadOnly Property Value() As [Object]         Get             Return "the value"         End Get     End Property     Public Sub New(ByVal initName As String)         Name = initName     End Sub     Public Sub New()         MyClass.New("initialName")     End Sub     Private methodCalled As Integer = 0     Public Shared Sub SayHello()         Console.WriteLine("Hello")     End Sub     Public Sub AddUp()         methodCalled += 1         Console.WriteLine("AddUp Called {0} times", methodCalled)     End Sub     Public Shared Function ComputeSum(ByVal d1 As Double, ByVal d2 As Double) As Double         Return d1 + d2     End Function     Public Shared Sub PrintName(ByVal firstName As [String], ByVal lastName As [String])         Console.WriteLine("{0},{1}", lastName, firstName)     End Sub     Public Sub PrintTime()         Console.WriteLine(DateTime.Now)     End Sub     Public Sub Swap(ByRef a As Integer, ByRef b As Integer)         Dim x As Integer = a         a = b         b = x     End Sub End Class Class Invoke     Public Shared Sub Main()         Dim t As Type = GetType(TestClass)         Dim c As New TestClass()         Dim args() As Object = {100.09, 184.45}         Dim m As MethodInfo = t.GetMethod("Swap")         args = New Object(1) {}         args(0) = 1         args(1) = 2         m.Invoke(New TestClass(), args)         Console.WriteLine("{0}, {1}", args(0), args(1))     End Sub End Class