예제 #1
0
        static IconExtension()
        {
            // Create a dynamic method to access Icon.iconData private field.
            var dm  = new DynamicMethod("GetIconData", typeof(byte[]), new[] { typeof(Icon) }, typeof(Icon));
            var fi  = typeof(Icon).GetField("iconData", BindingFlags.Instance | BindingFlags.NonPublic);
            var gen = dm.GetILGenerator();

            gen.Emit(OpCodes.Ldarg_0);
            gen.Emit(OpCodes.Ldfld, fi);
            gen.Emit(OpCodes.Ret);
            getIconData = (GetIconDataDelegate)dm.CreateDelegate(typeof(GetIconDataDelegate));
        }
예제 #2
0
        static IconUtil()
        {
            // Create a dynamic method to access Icon.iconData private field.

            var dm = new DynamicMethod(
                "GetIconData", typeof (byte[]), new[] {typeof (Icon)}, typeof (Icon));
            var fi = typeof (Icon).GetField(
                "iconData", BindingFlags.Instance | BindingFlags.NonPublic);
            var gen = dm.GetILGenerator();
            gen.Emit(OpCodes.Ldarg_0);
            if (fi != null) gen.Emit(OpCodes.Ldfld, fi);
            gen.Emit(OpCodes.Ret);

            IconDataDelegate = (GetIconDataDelegate) dm.CreateDelegate(typeof (GetIconDataDelegate));
        }