错误CS0115:找不到在Xamarin绑定库项目中覆盖的合适方法

时间:2018-04-19 10:06:45

标签: xamarin xamarin.android twilio xamarin-binding twilio-programmable-voice

我创建了一个绑定库项目,以便能够运行Android .aar文件。 我得到的几个错误之一是:

Error  CS0115  'Call.OnWarning(IDictionary)': no suitable method found to override TwilioBindings  C:\...\TwilioBindings\obj\Debug\generated\src\Com.Twilio.Voice.Call.cs;

为了解决这个问题,我验证了 api.xml 并发现 onWarning 方法的参数类型为 java.util.HashMap

<method abstract="false" deprecated="not deprecated" final="false" name="onWarning" native="false" return="void" static="false" synchronized="false" visibility="public">
    <parameter name="p0" type="java.util.HashMap">
    </parameter>
</method>

调用正在扩展 InternalCall ,它实现了 RTCMonitorCommand.Listener ,并在我检查了 api.xml 之后文件我注意到方法 onWarning 具有以下定义:

InternalCall

<method abstract="false" deprecated="not deprecated" final="false" name="onWarning" native="false" return="void" static="false" synchronized="false" visibility="public">
    <parameter name="warningDetails" type="java.util.HashMap&lt;java.lang.String, java.lang.Object&gt;">
    </parameter>
</method>

RTCMonitorCommand.Listener

<method abstract="true" deprecated="not deprecated" final="false" name="onWarning" native="false" return="void" static="false" synchronized="false" visibility="public">
    <parameter name="p0" type="java.util.HashMap&lt;java.lang.String, java.lang.Object&gt;">
    </parameter>
</method>

所以我得出的结论是,只有 Call 类具有不同的参数类型。

因此,我在 Metadata.xml 中编写了以下行,以更改调用 onWarning 方法的参数类型:

<attr path="/api/package[@name='com.twilio.voice']/class[@name='Call']/method[@name='onWarning' and count(parameter)=1 and parameter[1][@type='java.util.HashMap']]/parameter[1]" name="type">java.util.HashMap&lt;java.lang.String, java.lang.Object&gt;</attr>

错误消失但我在使用此绑定项目时出现了一些问题,这就是 Metadata.xml 中的一行,我并不是那么正确。

有人知道我的方法是否正确吗?

任何帮助都应该被贬低,

谢谢。

1 个答案:

答案 0 :(得分:0)

我从这个绑定库调用一个方法时遇到了问题,我认为这是由一些绑定错误引起的,但是在搜索完日志之后,我得出结论,问题是该库无法访问找到一个依赖。绑定项目正在引用依赖项目,但某种程度上引用不起作用。所以我更改了引用,而不是引用包引用了包dll,现在它正常运行。