MonoTouch绑定继承抽象成员的问题

时间:2013-08-02 13:07:02

标签: xamarin.ios

我正在研究Objective-C应用程序的MonoTouch绑定。我提到了 iOS Binding Walkthrough

我为i386,ARM生成了库,然后是通用库。此外,我创建了一个MonoTouch绑定项目。我使用Sharpie生成了ApiDefinition并添加了之前生成的通用库。现在,当我构建这个项目时,我收到以下错误。

  

ADClusterAnnotation.g.cs(86,86):错误CS0533:
AnnotationClusterMap.ADClusterAnnotation.Coordinate'隐藏继承的抽象成员MonoTouch.MapKit.MKAnnotation.Coordinate'(CS0533)

以下是ADClusterAnnotation的代码片段:

文件ADClusterannotation.h

@interface ADClusterAnnotation : NSObject <MKAnnotation> {
    CLLocationCoordinate2D  _coordinates;   
}
@property (nonatomic) CLLocationCoordinate2D coordinate;
@end

文件ADClusterAnnotation.m

@synthesize coordinate = _coordinates;

以下是ApiDefinition

的代码段
[BaseType (typeof (MKAnnotation))]
public partial interface ADClusterAnnotation {
    [Export ("coordinate")]
    CLLocationCoordinate2D Coordinate { get; set; }
}

所以我认为我们需要在ApiDefinition中改变一些东西。我尝试在API定义中从ADClusterAnnotation中删除Coordinate,但是它给出了一个错误,它实现了一个抽象成员。关于Monotouch绑定我缺少什么?

1 个答案:

答案 0 :(得分:2)

覆盖抽象成员需要c# newoverride

您可以通过将ApiDefinition更改为:

来生成该文件
[BaseType (typeof (MKAnnotation))]
public partial interface ADClusterAnnotation {
    [Export ("coordinate")]
    [New]
    CLLocationCoordinate2D Coordinate { get; set; }
}