При использовании проектов привязки 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# также ожидает InitializationObserver
в качестве третьего параметра. Однако, поскольку SDK закрыт, и я не могу изменить реализацию, единственный способ сделать это — реализовать интерфейс и его методы «переопределения» во внутреннем классе. Мне это кажется очень непрактичным.
В java я могу получить доступ к нестатическим членам из анонимного класса (например, к полю mPlayer), но на С# это невозможно.
Есть ли другой подход при создании проектов привязки Java в Xamarin, который позволяет это сделать? Есть ли лучший способ работы с сгенерированными классами?
Спасибо за помощь. Фред