0

iOS ライブラリのラッパーをビルドします。ここまでは順調ですね。オブジェクトを返すメソッドを除きます。メソッドは常に代わりに NSObject を返します。object パラメータを持つデリゲートにも同じストーリーがあります。

たとえば、TCConnection は Monotouch バインディング プロジェクトで次のように定義されています。

//@interface TCConnection : NSObject 
    [BaseType (typeof(NSObject))]
    public  interface TCConnection 
    {

        [ExportAttribute("state")]
        int state {get;}

    //...
    }

クラスTCDeviceは次のように定義されています

//@interface TCDevice : NSObject 
[BaseType (typeof(NSObject))]
public interface TCDevice
{
    [ExportAttribute("initWithCapabilityToken:delegate:")]
    IntPtr Constructor(String token, TCDeviceDelegate d);

    [Export("connect:delegate:")]
    TCConnection Connect([NullAllowed] NSDictionary param, [NullAllowed] TCConnectionDelegate del);

}

すべてが適切に dll にコンパイルされます。他のプロジェクトでdllを使用するときは、

MyTCDeviceDelegate d=new MyTCDeviceDelegate();
String token="XXXXX";
TCDevice dev=new TCDevice(token, d); 
TCConnection conn=dev.Connect(null,null);

最後の行は常に Invalid Cast 例外をスローします。メソッドが NSObject を返すようです。

ここで何が欠けていますか?

4

0 に答える 0