Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析Android SDK绑定添加,如何将接口转换为事件_C#_Android_Xamarin - Fatal编程技术网

C# 解析Android SDK绑定添加,如何将接口转换为事件

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'

我正试图通过以下方式将Parse的Android SDK中的接口使用转换为C#events:或者大部分。我需要转换的特定部分是如下接口:

请注意,接口只有一个方法(Done(ParseException))。当我尝试创建一个助手类时,就像教程中说的,我需要实现的不仅仅是这个方法,还有来自某个随机调用接口的另一个方法

生成的界面如下所示:

// 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>
公共
公众的