为 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。
我在这里缺少什么?