Синтаксис привязки Monotouch для протоколов - PullRequest
3 голосов
/ 28 февраля 2012

Если у меня есть следующее (протокол, а затем интерфейс, который использует этот протокол), как правильно настроить ApiDefinition для btouch? У меня большая часть .h файла конвертирована, но этот обманывает меня.

Спасибо

Jeff

@protocol GRGrabbaPreferencesProtocol <NSObject>
- (NSString*) baseNamepace; 
@end 

@interface GRGrabbaPreferences : NSObject <GRGrabbaPreferencesProtocol>
{ 
    GRGrabbaBarcodePrefs   *barcode; 
} 
@property (retain) GRGrabbaBarcodePrefs   *barcode; 
@end 

@interface GRGrabbaBarcodePrefs    : NSObject <GRGrabbaPreferencesProtocol>
@end 

1 Ответ

4 голосов
/ 28 февраля 2012

Протоколы на самом деле просто встроены в ваш интерфейс, так что вы можете либо просто встроить свойства непосредственно в ваш класс, либо вы можете иметь встроенный генератор для них.

// Notice the lack of [BaseType] attribute on this one
interface GRGrabbaPreferencesProtocol {
    [Export ("baseName")]
    string BaseName { get; }
}

[BaseType (typeof (NSObject))]
interface GRGrabbaPreferences : GRGrabbaPreferencesProtocol {
    [Export ("barcode")]
    GRGrabbaBarcodePrefs Barcode { get; }
}

[BaseType (typeof (NSObject))]
interface GRGrabbaBarcodePrefs : GRGrabbaPreferencesProtocol {
}

Вышеуказанное идентично:

[BaseType (typeof (NSObject))]
interface GRGrabbaPreferences : GRGrabbaPreferencesProtocol {
    [Export ("baseName")]
    string BaseName { get; }

    [Export ("barcode")]
    GRGrabbaBarcodePrefs Barcode { get; }
}

[BaseType (typeof (NSObject))]
interface GRGrabbaBarcodePrefs : GRGrabbaPreferencesProtocol {
    [Export ("baseName")]
    string BaseName { get; }
}

Более практично позволить генератору взять на себя вкладку, чтобы избежать ошибок и проблем вырезания / вставки. Но обратите внимание, что GRGrabbaPreferencesProtocol не экспортируется в C # в любой форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...