0

为 iOS 库构建包装器。到目前为止,一切都很好。除非在返回对象的方法中。方法总是返回 NSObject。同样的故事在具有对象参数的委托中。

例如,在 Monotouch 绑定项目中,TCConnection 被定义为

//@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