由于重载方法,使用 Xamarin Android 的绑定错误

本文关键字:Xamarin 使用 Android 错误 绑定 方法 于重载 重载 | 更新日期: 2023-09-27 18:30:31

我在使用 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>

由于重载方法,使用 Xamarin Android 的绑定错误

最后,

我可以使用文件元数据中的附加属性使其工作.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>

我使用此线程中发布的响应之一中提出的想法来使用此解决方案。