C# 解析Android SDK绑定添加,如何将接口转换为事件
我正试图通过以下方式将Parse的Android SDK中的接口使用转换为C#events:或者大部分。我需要转换的特定部分是如下接口: 请注意,接口只有一个方法(Done(ParseException))。当我尝试创建一个助手类时,就像教程中说的,我需要实现的不仅仅是这个方法,还有来自某个随机调用接口的另一个方法 生成的界面如下所示:C# 解析Android SDK绑定添加,如何将接口转换为事件,c#,android,xamarin,C#,Android,Xamarin,我正试图通过以下方式将Parse的Android SDK中的接口使用转换为C#events:或者大部分。我需要转换的特定部分是如下接口: 请注意,接口只有一个方法(Done(ParseException))。当我尝试创建一个助手类时,就像教程中说的,我需要实现的不仅仅是这个方法,还有来自某个随机调用接口的另一个方法 生成的界面如下所示: // Metadata.xml XPath interface reference: path="/api/package[@name='com.parse'
// Metadata.xml XPath interface reference: path="/api/package[@name='com.parse']/interface[@name='SendCallback']"
[Register ("com/parse/SendCallback", "", "Com.Parse.ISendCallbackInvoker")]
public partial interface ISendCallback : global::Com.Parse.IParseCallback1 {
// Metadata.xml XPath method reference: path="/api/package[@name='com.parse']/interface[@name='SendCallback']/method[@name='done' and count(parameter)=1 and parameter[1][@type='com.parse.ParseException']]"
[Register ("done", "(Lcom/parse/ParseException;)V", "GetDone_Lcom_parse_ParseException_Handler:Com.Parse.ISendCallbackInvoker, ParseBindings")]
void Done (global::Com.Parse.ParseException
}
它确实是从ParseCallback1扩展而来的,但为什么在Java中我只需要实现一个方法,而在这里实现这两个呢
除此之外,接口在JAR上不是公共的,因此当我编译使用此helper类的项目时:
internal partial class SendCallbackEventMapper : Java.Lang.Object,
Com.Parse.ISendCallback
{
public void Done(Com.Parse.ParseException e) {
}
public void Done(Java.Lang.Object o) {
}
}
我在附件中找到了错误
Error: error: ParseCallback1 is not public in com.parse; cannot be accessed from outside package
com.parse.ParseCallback1
(ParsePush)
Error: error: name clash: done(Throwable) in SendCallbackEventMapper and done(T) in ParseCallback1 have the same erasure, yet neither overrides the other
public void done (java.lang.Throwable p0)
where T is a type-variable:
T extends Throwable declared in interface ParseCallback1
(ParsePush)
我的选择是什么?我真的需要实现这些方法。我甚至无法使用提供的接口,例如带有这些错误的SendCallback,因此我无法真正使用Parse SDK中的任何InBackground方法。为了解决此IParseCallback1问题,只需将以下行添加到/Transforms/Metadata.xml文件中:
<attr path="/api/package[@name='com.parse']/interface[@name='ParseCallback1']" name="visibility">public</attr>
<attr path="/api/package[@name='com.parse']/interface[@name='ParseCallback2']" name="visibility">public</attr>
公共
公众的