using System;
using System.Threading;
+using System.Reflection;
class I {
Console.WriteLine ("Answer is : " + result);
}
+ static bool MyFilter (MemberInfo mi, object criteria)
+ {
+ Console.WriteLine ("You passed in : " + criteria);
+ return true;
+ }
public static int Main ()
{
I.GetTextFn _ = I.GetText;
- X t = new X ();
+ Console.WriteLine ("Value: " + I.GetText);
+ X x = new X ();
- Thread thr = new Thread (new ThreadStart (t.Thread_func));
+ Thread thr = new Thread (new ThreadStart (x.Thread_func));
thr.Start ();
Console.WriteLine ("Inside main ");
Console.WriteLine (_("Hello"));
- t.Bar ();
+ x.Bar ();
+
+ MemberFilter filter = new MemberFilter (MyFilter);
+
+ Type t = x.GetType ();
+
+ MemberInfo [] mi = t.FindMembers (MemberTypes.Method, BindingFlags.Static | BindingFlags.NonPublic,
+ Type.FilterName, "MyFilter");
+
+ Console.WriteLine ("FindMembers called, mi = " + mi);
+ Console.WriteLine (" Count: " + mi.Length);
+ if (!filter (mi [0], "MyFilter"))
+ return 1;
+
+ //
+ // This test is used to call into a delegate defined in a separate
+ // namespace, but which is still not a nested delegate inside a class
+ //
+ NameSpace.TestDelegate td = new NameSpace.TestDelegate (multiply_by_three);
+
+ if (td (8) != 24)
+ return 30;
+
+ //
+ // Check the names that were used to define the delegates
+ //
+ if (td.GetType ().FullName != "NameSpace.TestDelegate")
+ return 31;
+ if (_.GetType ().FullName != "I+GetTextFn")
+ return 32;
+
Console.WriteLine ("Test passes");
return 0;
}
+
+ static int multiply_by_three (int v)
+ {
+ return v * 3;
+ }
+
}
+
+namespace NameSpace {
+
+ public delegate int TestDelegate (int a);
+
+}
+