我正在使用适用于 iOS 的 ArcGIS Runtime,并且正在尝试为我正在做的一些事情设置绑定。这是我要绑定的类:
@interface AGSTiledLayer : AGSLayer {
@private
id<AGSTiledLayerTileDelegate> _tileDelegate;
NSOperationQueue *_operationQueue;
}
@property (nonatomic, assign) id<AGSTiledLayerTileDelegate> tileDelegate;
@property (nonatomic, retain, readonly) NSOperationQueue *operationQueue;
@property (nonatomic, retain, readonly) AGSTileInfo *tileInfo;
- (NSOperation<AGSTileOperation>*)retrieveImageAsyncForTile:(AGSTile*)tile;
@end
@protocol AGSTileOperation <NSObject>
@property (nonatomic, retain) AGSTile *tile;
@end
基于这些,我生成了以下绑定类
[BaseType (typeof (AGSLayer))]
interface AGSTiledLayer {
[Export ("tileDelegate")]
AGSTiledLayerTileDelegate TileDelegate { get; set; }
[Export ("operationQueue")]
NSOperationQueue OperationQueue { get; }
[Export ("tileInfo")]
AGSTileInfo TileInfo { get; }
[Export ("retrieveImageAsyncForTile:")]
AGSTileOperation RetrieveImageAsyncForTile (AGSTile tile);
}
[BaseType (typeof (NSObject))]
[Model]
interface AGSTileOperationProtocol {
[Export ("tile")]
AGSTile Tile { get; set; }
}
[BaseType (typeof (NSOperation))]
interface AGSTileOperation : AGSTileOperationProtocol
{}
当我RetrieveImageAsyncForTile
用有效的方法调用时AGSTile
,我得到一个InvalidCastException
说法Cannot cast from source type to destination type
。我还尝试让我的 AGSTileOperation 在功能上等同于AGSTileOperationProtocol
上述内容,但NSOperation
BaseType
使用[Model]
.
处理方法绑定的最佳方法是- (NSOperation<AGSTileOperation>*)retrieveImageAsyncForTile:(AGSTile*)tile;
什么?
我尝试了一些类似于Monotouch 绑定的替代方案——“无法从源类型转换为目标类型”。,但他们的问题似乎从未得到解决。
任何帮助将不胜感激。
更新#1
如果我将RetrieveImageAsyncForTile
from的返回类型更改AGSTileOperation
为NSOperation
它会正确返回,并且不会失败,但缺少附加(必需)属性。这给了我另一个想法,我认为它可能会产生一些额外的见解,但令我惊讶的是,尽管我认为它不可能失败,但它确实失败了。
[BaseType (typeof (NSOperation))]
interface AGSTileOperation
{}
我认为,由于它NSOperation
在InvalidCastException
.
希望有人知道我该如何解决这个问题?