Реализация протокола MKAnnotation в проекте Binding

Привет, ма, пытаюсь создать следующее объявление в проекте iOS Binding. Декларация Цели источника C следующая

@interface LeBlutrackerDevice : LeDevice <MKAnnotation>
{
    CLLocationCoordinate2D _coord;
}

@property (nonatomic,readonly,copy) NSString *title;
@property (nonatomic,readonly,copy) NSString *subtitle;
@property (nonatomic,readonly) CLLocationCoordinate2D coordinate;

@property (nonatomic, strong) NSString *svInfo;
@property (nonatomic, strong) NSString *navInfo;

@property (nonatomic,readonly) enum LE_DEVICE_STATE state;
@property (nonatomic,strong) id <LeBlutrackerDeviceDelegate> delegate;
@property (readonly) BOOL bcKeyEnabled;
- (BOOL) writeBroadcastKey: (NSData *) key;

@end

Это то, что у меня есть в ApiDefinition.cs

[Model, BaseType (typeof (LeDevice))]
public partial interface LeBlutrackerDevice : MKAnnotation
{
    [Export ("title", ArgumentSemantic.Copy)]
    string Title { get; }

    [Export ("subtitle", ArgumentSemantic.Copy)]
    string Subtitle { get; }

    [Export ("coordinate")]
    CLLocationCoordinate2D Coordinate { get; }

    [Export ("svInfo", ArgumentSemantic.Retain)]
    string SvInfo { get; set; }

    [Export ("navInfo", ArgumentSemantic.Retain)]
    string NavInfo { get; set; }

    [Export ("state")]
    LE_DEVICE_STATE State { get; }

    [Export ("delegate", ArgumentSemantic.Retain)]
    LeBlutrackerDeviceDelegate Delegate { get; set; }

    [Export ("bcKeyEnabled")]
    bool BcKeyEnabled { get; }

    [Export ("writeBroadcastKey:")]
    bool WriteBroadcastKey (NSData key);
}

И я получаю следующие ошибки

Target GenerateBindings:

ApiDefinition.cs(309,48): error CS0527: Type `MonoTouch.MapKit.MKAnnotation' in interface list is not an interface

ApiDefinition.cs(313,10): warning CS0108: `SticknFind.LeBlutrackerDevice.Title' hides inherited member `MonoTouch.MapKit.MKAnnotation.Title'. Use the new keyword if hiding was intended

ApiDefinition.cs(316,10): warning CS0108: `SticknFind.LeBlutrackerDevice.Subtitle' hides inherited member `MonoTouch.MapKit.MKAnnotation.Subtitle'. Use the new keyword if hiding was intended

ApiDefinition.cs(319,26): warning CS0108: `SticknFind.LeBlutrackerDevice.Coordinate' hides inherited member `MonoTouch.MapKit.MKAnnotation.Coordinate'. Use the new keyword if hiding was intended

Кто-нибудь пытается создать привязку для SticknFind SDK? пожалуйста, дайте мне знать, так как я более чем счастлив опубликовать окончательный результат на GitHub.

Если я пытаюсь наследовать от IMKAnnotation, я получаю следующую ошибку

btouch: No [Export] attribute on property SticknFind.LeBlutrackerDevice.Coordinate
Task "BTouch" execution -- FAILED

1 ответ

Решение

Вы хотите наследовать от интерфейса не тип, это то, что вызывает первую ошибку CS0527.

Это интерфейс, который украшен [Protocol] атрибут (поэтому он будет соответствовать объявлению ObjC). Это также решит более поздние ошибки CS0108, так как тип имеет дополнительные члены, не являющиеся частью протокола.

Так что это должно решить это:

[BaseType (typeof (LeDevice))]
public partial interface LeBlutrackerDevice : IMKAnnotation {
   ...
}
Другие вопросы по тегам