2 using System
.Reflection
;
6 public struct SimpleStruct
{
10 public SimpleStruct (bool arg
) {
16 static void Test2 () {
17 Console
.WriteLine ("Test2 called");
20 public static SimpleStruct
Test1 (SimpleStruct ss
) {
21 Console
.WriteLine ("Test1 called " + ss
.a
+ " " + ss
.b
);
22 SimpleStruct res
= new SimpleStruct ();
28 public static void Foo(ref int x
, ref int y
)
35 Type t
= typeof (Test
);
37 MethodInfo m2
= t
.GetMethod ("Test2");
41 MethodInfo m1
= t
.GetMethod ("Test1");
45 object [] args
= new object [1];
46 SimpleStruct ss
= new SimpleStruct ();
51 SimpleStruct res
= (SimpleStruct
)m1
.Invoke (null, args
);
58 // Test that the objects for byref valuetype arguments are
59 // automatically created
60 MethodInfo m3
= typeof(Test
).GetMethod("Foo");
64 m3
.Invoke(null, args
);
66 if ((((int)(args
[0])) != 20) || (((int)(args
[1])) != 30))
69 // Test the return value from ConstructorInfo.Invoke when a precreated
71 ConstructorInfo ci
= typeof (SimpleStruct
).GetConstructor (new Type
[] { typeof (bool) }
);
72 SimpleStruct res2
= (SimpleStruct
)ci
.Invoke (ss
, new object [] { false }
);
74 // Test invoking of the array Get/Set methods
75 string[,] arr
= new string [10, 10];
77 arr
.GetType ().GetMethod ("Set").Invoke (arr
, new object [] { 1, 1, "FOO" }
);
78 string s
= (string)arr
.GetType ().GetMethod ("Get").Invoke (arr
, new object [] { 1, 1 }
);