C#反射调用外部接口有ref返回参数

记录:

最近有个项目需要调用本地COM组件,但是我们是java开发的BS架构。之前的做法是注册一个ocx调用,但是维护成本大而且不算稳定,于是这几天想研究下解决方案。

最后决定用C#开发一个本地的websocket调用读卡dll。

之前并没有C#开发经验,单纯自己摸索,还好需求不算难,多搜搜框架就搭了七七八八。

过程中发现只有InvokeMember()能成功调用,Invoke都会调用失败,尝试了几次发现打印出来的方法并没有我需要的。最后也没研究出来为啥。

接口入参为三个字段,其中第三个是ref,InvokeMember成功调用了以后没有返回ref字段,网上说的方法都试了下没有什么用。

最终找到以下博客:

利用反射技术动态执行方法时如何取引用类参数的值 - 梦想(胡大利) - 博客园 (cnblogs.com)

ParameterModifier[] ParamMods = new ParameterModifier [1]; 
ParamMods[0] = new ParameterModifier (3);  // 初始化为接口参数的个数
ParamMods[0][2] = true;   // 设置第三个参数为返回参数

指定第三个参数为返回参数,成功返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值