c# - 由于重载方法,使用 Xamarin Android 的绑定(bind)错误

标签 c# java android xamarin.android xamarin

我在使用 Xamarin 编译绑定(bind)项目时遇到问题。原始 jar 文件有一个接口(interface),该接口(interface)包含两个名称相同但接收不同参数的方法(重载方法)。当绑定(bind)项目将 jar 文件转换为 C# 代码时,由于此重载而导致一些错误。

如果我使用 Metadata.xml 文件更改方法名称,它会更改两个名称方法,但会以相同的错误结束。

这是jar文件中的原始接口(interface)代码:

 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);
}

这是重载方法对应的绑定(bind)工程中的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>

我使用此 thread 中发布的其中一个回复中提出的想法来构建此解决方案

关于c# - 由于重载方法,使用 Xamarin Android 的绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18663131/

相关文章:

c# - 如何在 C# Windows 应用程序中获取网格的列值?

java - 类型转换类(class)<?将 SomeClass> 扩展为 SomeClass?

java - 字符串基本查询

android - 使用 XML 指定 ListView(或其他类似组件)的元素

c# - linq distinct 并选择新查询

c# - 在 asp.net 中使用 wordnet 的问题

C# 数字对象之间的加法

java - long 和 double 每次都工作的时候,为什么 Java 中的数字类型那么多?

安卓 Java : how to disable microphone input while streaming system audio?

java - 如何以编程方式关闭 Android 中的共享系统对话框?