Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public event EventHandler EventConsumed;
- public virtual void OnEventConsumed(object sender, EventArgs e)
- {
- if (EventConsumed != null)
- EventConsumed(this, e);
- }
- public override void OnEventConsumed(object sender, EventArgs e)
- {
- base.OnEventConsumed(sender, e);
- }
- ...
- MethodInfo baseMethod = typeof(EventConsumer).GetMethod("OnEventConsumed");
- MethodBuilder methodBuilder = typeBuilder.DefineMethod("OnEventConsumed",
- baseMethod.Attributes,
- baseMethod.CallingConvention,
- typeof(void),
- new Type[] {typeof(object),
- typeof(EventArgs)});
- ILGenerator ilGenerator = methodBuilder.GetILGenerator();
- // load the first two args onto the stack
- ilGenerator.Emit(OpCodes.Ldarg_1);
- ilGenerator.Emit(OpCodes.Ldarg_2);
- // call the base method
- ilGenerator.EmitCall(OpCodes.Callvirt, baseMethod, new Type[0] );
- // return
- ilGenerator.Emit(OpCodes.Ret);
- ...
- Common Language Runtime detected an invalid program.
- .method public hidebysig virtual instance void OnEventConsumed(object sender, class [mscorlib]System.EventArgs e) cil managed
- {
- .maxstack 8
- L_0000: nop
- L_0001: ldarg.0
- L_0002: ldarg.1
- L_0003: ldarg.2
- L_0004: call instance void SubclassSpike.BaseClass::OnEventConsumed(object, class [mscorlib]System.EventArgs)
- L_0009: nop
- L_000a: ret
- }
- // load 'this' and the first two args onto the stack
- ilGenerator.Emit(OpCodes.Ldarg_0);
- ilGenerator.Emit(OpCodes.Ldarg_1);
- ilGenerator.Emit(OpCodes.Ldarg_2);
- // call the base method
- ilGenerator.EmitCall(OpCodes.Call, baseMethod, new Type[0] );
- // return
- ilGenerator.Emit(OpCodes.Ret);
- public virtual void OnEventConsumed(object sender, EventArgs e)
- {
- if (EventConsumed != null)
- EventConsumed(this, e);
- }
- public virtual void OnEventConsumed(EventArgs e)
- {
- EventHandler handler = this.EventConsumed;
- if ( null != handler ) handler( this, e );
- }
Add Comment
Please, Sign In to add comment