public static MethodBuilder DefineMethod(this TypeBuilder builder, string name, MethodAttributes attributes, MethodSignature signature) { var t = TypeOf <MethodBuilder> .TypeID; var modb = (ModuleBuilder)builder.Module; var mod = GetNativeModule(modb); byte[] sig = signature.GetSignature(modb); int tok = DefineMethodInternal.Invoke(mod, builder.TypeToken.Token, name, sig, sig.Length, attributes); MethodBuilder mb = NewMethod.Invoke( name, attributes, signature.CallingConvention, signature.ReturnType, signature.ParameterTypes, modb, builder, false ); mb.GetToken(); //returns 0 but circumvents the RSA error (?) SetToken.Invoke(mb, NewMethodToken(tok)); GetMethodList.Invoke(builder).Add(mb); return(mb); }