linux-packaging-mono/mono/tests/dynamic-method-access.2.cs
Xamarin Public Jenkins (auto-signing) 6bdd276d05 Imported Upstream version 5.0.0.42
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
2017-04-10 11:41:01 +00:00

33 lines
780 B
C#

using System;
using System.Reflection;
using System.Reflection.Emit;
class Host {
static int Field = 42;
}
class Program {
delegate int Getter ();
public static int Main ()
{
DynamicMethod method = new DynamicMethod ("GetField",
typeof (int), new Type [0], Type.GetType ("Host"));
ILGenerator il = method.GetILGenerator ();
il.Emit (OpCodes.Ldsfld, typeof (Host).GetField (
"Field", BindingFlags.Static |
BindingFlags.NonPublic));
il.Emit (OpCodes.Ret);
Getter g = (Getter) method.CreateDelegate (typeof (Getter));
Console.WriteLine (g ());
if (g () == 42)
return 0;
return 1;
}
}