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)); }
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)); }