public override void Emit(IMemberEmitter member, ILGenerator gen) { ArgumentsUtil.EmitLoadOwnerAndReference(owner, gen); foreach (var exp in args) { exp.Emit(member, gen); } if (VirtualCall) { gen.Emit(OpCodes.Callvirt, method.AsMethodInfo()); } else { gen.Emit(OpCodes.Call, method.AsMethodInfo()); } }
public override void Emit(IMemberEmitter member, ILGenerator gen) { // @mbrit - 2012-06-04 - can't do anything other than pass proper MethodInfo // instances down a this is all MSIL knows how to deal with... gen.Emit(OpCodes.Ldtoken, method.AsMethodInfo()); #if !MONO if (declaringType == null) { throw new GeneratorException("declaringType can't be null for this situation"); } gen.Emit(OpCodes.Ldtoken, declaringType); #endif var minfo = MethodBaseMethods.GetMethodFromHandle1; #if !MONO minfo = MethodBaseMethods.GetMethodFromHandle2; #endif gen.Emit(OpCodes.Call, minfo); gen.Emit(OpCodes.Castclass, typeof(MethodInfo)); }
internal void DefineMethodOverride(IMethodInfo method, IMethodInfo toOverride) { this.Invoke("DefineMethodOverride", method.AsMethodInfo(), toOverride.AsMethodInfo()); }
internal static void DefineMethodOverride(this TypeBuilder builder, MethodBuilder methodInfoBody, IMethodInfo methodInfoDeclaration) { builder.DefineMethodOverride(methodInfoBody, methodInfoDeclaration.AsMethodInfo()); }