如何在不传递参数的情况下调用invokeMonoMethod方法?
解决invokeMonoMethod无参数调用时报错的问题
我来帮你搞定这个问题!从你给出的报错信息来看,Uncaught TypeError: Cannot read property 'length' of undefined,这说明invokeMonoMethod底层的callMethod函数(在loader.js第106行)期望接收一个参数数组,但你完全不传参数的时候,这个参数位置的值是undefined,它尝试读取undefined的length属性,自然就抛出了错误。
解决方案
你只需要在调用时传递一个空数组作为最后一个参数即可,即使目标C#方法不需要任何参数:
invokeMonoMethod('MonoSanityClient', 'MonoSanityClient', 'Examples', 'getMessage', [])
原理说明
这类跨语言调用的封装方法通常会把参数统一放在一个数组里处理,方便批量传递和遍历。当你不传参数时,这个数组参数就变成了undefined,而代码里没有做“参数不存在时默认设为空数组”的处理,所以才会触发报错。传入空数组后,函数能正常读取length(值为0),进而正确调用无参数的C#方法。
如果之后需要给目标方法传参数,直接把参数按顺序放在这个数组里就行,比如:
invokeMonoMethod('MonoSanityClient', 'MonoSanityClient', 'Examples', 'getMessageWithArgs', ['hello', 123])
内容的提问来源于stack exchange,提问作者Guilherme Corsino
相关产品推荐
相关产品推荐

