2016-04-26 1 views
0

Mein Xamarin Android Binding-Projekt (nach einigen doppelten Methoden behoben) kompiliert korrekt.Xamarin Android Binding: Wie man eine Schnittstelle aus der Bibliothek verwendet

Jetzt muss ich eine Schnittstelle aus der Bibliothek verwenden. In Java ich auf diese Weise tat:

private PCLIAE87Events btProtListener; 
btProtListener = new PCLIAE87Events() { 
    @Override 
    public void onLibraryStarted(PCLIAE87 library) { 
     btProtLibrary = library; 
    } 
}; 

Wie ich in C# zu tun? Ich habe diese Schnittstelle eine Funktion

PCLIAE87.StartLibrary(this, new PCLIAE87Events()) 

aber Schnittstellen als Methodenparameter übergeben passieren nicht funktioniert in C#.

Java-Schnittstelle PCLIAE87Events in C# wird automatisch als IPCLIAE87Events binded (öffentliche Schnittstelle IPCLIAE87Events: IAbstractPCLEvents, IJavaObject, IDisposable)

Ich habe auch versucht, eine Klasse zu erstellen, die Schnittstelle und die Methoden implementiert:

class PCLIAE87EventsImplementation : Java.Lang.Object, IPCLIAE87Events 
{ 
    public void OnLibraryStarted(Java.Lang.Object p0) 
    { 
     throw new NotImplementedException(); 
    } 

    public void OnPOSConnected() 
    { 
     throw new NotImplementedException(); 
    } 

    public void OnPOSDisconnected() 
    { 
     throw new NotImplementedException(); 
    } 
} 

aber ich bekomme diese Fehlermeldung

PCLIAE87EventsImplementation ist nicht abstrakt und enthebt nicht abstrakte Methode onLibraryStarted (PCLIAE87) in AbstractPCLEvents

Ich denke an eine Xamarin Bindung Fehler im Zusammenhang, vielleicht kann mir jemand vorschlagen, wo ich überprüfen müssen?

Vielen Dank!

Antwort

0

Anonyme Klassenerstellung wird in C# nicht unterstützt. Sie müssen also eine Klasse erstellen, die diese Schnittstelle implementiert. Soweit ich herausfinden kann es etwas sein sollte:

class PCLIAE87EventsImplementation : PCLIAE87Events 
{ 
    piblic void OnLibraryStarted(PCLIAE87 library) 
    { 
     btProtLibrary = library; 
    } 
} 

Dann sollten Sie rufen in der Lage zu

PCLIAE87Events btProtListener = new PCLIAE87EventsImplementation(); 
PCLIAE87.StartLibrary(this, btProtListener); 
+0

Danke, habe ich versucht, Ihre Lösung zu –

+0

Im (bitte meine aktualisierten Beitrag sehen) nicht sehr sicher, aber versuchen Sie, den Parametertyp auf 'IPCLIAE87' zu ändern oder versuchen Sie' onLibraryStarted' mit einem kleinen 'o' zu schreiben – Matt