我的Xamarin Android Binding项目(修复了几个重复方法后)正确编译。
现在我必须使用库中的接口。 在Java中我这样做:
private PCLIAE87Events btProtListener;
btProtListener = new PCLIAE87Events () {
@Override
public void onLibraryStarted(PCLIAE87 library) {
btProtLibrary = library;
}
};
我怎么能用C#做什么? 我必须将此接口传递给函数
PCLIAE87.StartLibrary(this, new PCLIAE87Events())
但是作为方法参数传递的接口在C#中不起作用。
C#中的Java接口 PCLIAE87Events 自动绑定为 IPCLIAE87Events (公共接口IPCLIAE87Events:IAbstractPCLEvents,IJavaObject,IDisposable)
我还尝试创建一个实现Interface及其方法的类:
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();
}
}
但我收到此错误
PCLIAE87EventsImplementation不是抽象的,也不会覆盖 抽象方法onLibraryStarted(PCLIAE87)在AbstractPCLEvents
中
我认为与Xamarin绑定错误有关,也许有人可以建议我在哪里检查?
谢谢!
答案 0 :(得分:0)
C#不支持匿名类创建。所以你必须创建一个实现这个接口的类。据我所知,它应该是这样的:
class PCLIAE87EventsImplementation : PCLIAE87Events
{
piblic void OnLibraryStarted(PCLIAE87 library)
{
btProtLibrary = library;
}
}
然后你应该可以打电话了
PCLIAE87Events btProtListener = new PCLIAE87EventsImplementation();
PCLIAE87.StartLibrary(this, btProtListener);