Lors de l'utilisation de projets de liaison Xamarin et Java, le projet de liaison résultant suit naturellement le style de codage Java. C'est à dire. attendre l'utilisation de classes anonymes (pour implémenter des interfaces de rappel simples) en tant que paramètres. Voici un exemple du code java:Comment interagir avec des méthodes qui prennent des interfaces simples en tant que paramètres dans un SDK de liaison Java fermé?
// 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);
}
}
Le code C# résultant attendent également un InitializationObserver
comme le troisième paramètre. Toutefois, étant donné que le SDK est fermé et que je ne parviens pas à modifier l'implémentation, la seule façon de le faire consiste à implémenter l'interface et ses méthodes "override" dans une classe interne. Cela me semble très peu pratique.
En Java, je peux accéder à des membres non statiques de la classe anonyme (par exemple le champ mPlayer), mais cela n'est pas possible en C#.
Existe-t-il une autre approche pour créer des projets de liaison Java dans Xamarin? Existe-t-il une meilleure façon de gérer les classes générées?
Merci de votre aide. Fred