协议的Monotouch绑定语法

时间:2012-02-28 05:48:57

标签: binding xamarin.ios protocols

如果我有以下(协议,然后是使用该协议的接口),为btouch设置ApiDefinition的正确方法是什么?我已经将大部分的.h文件转换了,但是这个文件让我感到很沮丧。

由于

杰夫

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

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

@interface GRGrabbaBarcodePrefs    : NSObject <GRGrabbaPreferencesProtocol>
@end 

1 个答案:

答案 0 :(得分:4)

协议实际上只是内嵌到您的界面中,因此您可以直接将属性内联到您的类中,或者您可以让生成器为您内联这些属性。

// 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#。