0

使用 Xamarin 和 Java 绑定项目时,生成的绑定项目自然遵循 java 编码风格。即期望使用匿名类(实现简单的回调接口)作为参数。下面是一个java代码示例:

// Field
private Player mPlayer;

SDKClass.staticMethod(oneObject, anotherObject, new InitializationObserver() { 
    @Override
    public void onInitialized(SomeClass someClass) { 
        // Calls mPlayer
    }

    @Override
    public void OnError (Java.Lang.Throwable Error)
    {
        Console.WriteLine("Error in initialization: " + Error.Message);

    }
}

生成的 C# 代码也期望 anInitializationObserver作为第三个参数。但是,由于 SDK 已关闭并且我无法更改实现,因此我可以做到这一点的唯一方法是在内部类中实现接口及其“覆盖”方法。这对我来说似乎很不切实际。

在java中,我可以从匿名类(例如字段mPlayer)访问非静态成员,但是afaik这在C#中是不可能的。

在 Xamarin 中创建 Java 绑定项目时是否有另一种方法允许这样做?有没有更好的方法来处理生成的类?

谢谢你帮忙。弗雷德

4

1 回答 1

0

我相信除了在 InitializationObserver 实现中添加 Player 字段并将其作为构造函数参数传递之外别无他法(这实际上是 java 在后台为匿名类所做的事情)。有时当您只需要一种方法时,您可以实现包装器或扩展方法(例如实例方法)并使用 lambda 和字段闭包将实现传递给 java 接口实现。

于 2015-04-11T21:08:13.877 回答