static public void EmitAsDelegate(TypeEmitter declaringType, TypeReference delegateType, MethodReference targetMethod) { var definition = new FunctorMethodEmitter(declaringType, "AsDelegate", delegateType, MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig); definition.EmitAsDelegate(delegateType, targetMethod); }
static public void EmitConstructor(TypeEmitter declaringType, MethodReference targetMethod) { var definition = new FunctorMethodEmitter(declaringType, ".ctor", declaringType.Assembly.TypeSystem.Void, MethodAttributes.Assembly | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName); definition.EmitConstructorBody(targetMethod); }
static public void EmitInvoke(TypeEmitter declaringType, MethodReference targetMethod) { var definition = new FunctorMethodEmitter(declaringType, "Invoke", targetMethod.GetReturnType(), MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig); definition.EmitInvokeBody(targetMethod); }