我在使用Xamarin编译绑定项目时遇到问题。原始的jar文件具有一个接口,该接口包含两个名称相同但接收不同参数的方法(一个重载方法)。当绑定项目将jar文件转换为C#代码时,由于此重载,将导致一些错误。
如果我使用Metadata.xml文件更改方法名称,它将更改两个名称方法,但均以相同的错误结尾。
这是jar文件中的原始接口代码:
public abstract interface MitControllerListener
{
public abstract void setMITCardInformation(MITCardInformation paramMITCardInformation);
public abstract void setMitError(String paramString, int paramInt);
public abstract void setResult(String paramString);
public abstract void setResult(BeanResponseSell paramBeanResponseSell);
}
这是绑定项目中与重载方法相对应的api.xml:
<method abstract="true" deprecated="not deprecated" final="false" name="setResult" native="false" return="void" static="false" synchronized="false" visibility="public">
<parameter name="p0" type="com.mitec.bean.BeanResponseSell">
</parameter>
</method>
<method abstract="true" deprecated="not deprecated" final="false" name="setResult" native="false" return="void" static="false" synchronized="false" visibility="public">
<parameter name="p0" type="java.lang.String">
</parameter>
最后,我可以使用文件Metadata.xml中的附加属性使其工作,以通过每个方法接收的参数类型来将一个与另一个具有相同名称的方法区分开来:
<attr path="/api/package[@name='com.x.controller']/interface[@name='MitControllerListener']/method[@name='setResult' and parameter[1][@type='java.lang.String']]" name="managedName">SetResult2</attr>
我使用此主题发布的回复之一中提出的想法作为该解决方案的基础
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句