AARを使用してXamarinプロジェクトのAndroidバインディングライブラリを作成しました。XamarinのAndroidライブラリ用JavaをC#に移植
私は今、そのライブラリを実装しようとしています。ここで
は、ライブラリを使用してコードのJava断片である:
Javaコード:
new AsyncOperation.CompletionHandler<RouteManager>(){
@Override
public void success(RouteManager result){
result.subscribe(ACCEL_DATA, new RouteManager.MessageHandler(){
@Override
public void process(Message message){
Log.i(LOG_TAG,message)
}
}
}
私はC#にこのコードポートにしようとしています。
結合ライブラリから作成されたC#のラッパーからの私のC#コード:
class AsyncOperationHandler : AsyncOperationCompletionHandler
{
public override unsafe void Success(Object p0)
{
try
{
var routeManger = (IRouteManager)p0;
routeManger.Subscribe(ACCEL_DATA, new RouteMessageHandler());
}
catch (Exception)
{
Log.Error(LOG_TAG, "Error");
}
}
}
class RouteMessageHandler : IRouteManagerMessageHandler
{
public void Dispose()
{
throw new NotImplementedException();
}
public IntPtr Handle { get; }
public void Process(Message p0)
{
var message = p0;
Log.Info(LOG_TAG, message);
}
}
私はrouteManger.Subscribeライン上のC#ラッパーにエラーを取得しています。
RouteManagerMessageHandlerが初期化されると、Handleが取得され、バインディングライブラリ内でnullポインタ例外がスローされます。
これはJavaインターフェイスをC#に移植する正しい方法ですか?