Binding 协议的Monotouch绑定语法

Binding 协议的Monotouch绑定语法,binding,xamarin.ios,protocols,Binding,Xamarin.ios,Protocols,如果我有以下内容(一个协议,然后是一个使用该协议的接口),那么为btouch设置ApiDefinition的正确方法是什么?我已经转换了大部分.h文件,但这个文件在欺骗我 谢谢 杰夫 @protocol grgrabbapreferenceprotocol -(NSString*)基名称空间; @结束 @接口引用:NSObject { GRGRABABARCODEPREFS*条形码; } @属性(保留)GRGRABABARCODEPREFS*条形码; @结束 @接口grgrabbabarco

如果我有以下内容(一个协议,然后是一个使用该协议的接口),那么为btouch设置ApiDefinition的正确方法是什么?我已经转换了大部分.h文件,但这个文件在欺骗我

谢谢

杰夫

@protocol grgrabbapreferenceprotocol
-(NSString*)基名称空间;
@结束
@接口引用:NSObject
{ 
GRGRABABARCODEPREFS*条形码;
} 
@属性(保留)GRGRABABARCODEPREFS*条形码;
@结束
@接口grgrabbabarcodepresfs:NSObject
@结束

协议实际上只是内联到接口中,因此您可以只将属性直接内联到类中,也可以让生成器为您内联这些属性

// 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; }
}
更实际的做法是让生成器接管内联,以避免错误和剪切/粘贴问题。但请注意,没有任何形式的GRGRGrabbaPreferencesProtocol导出到C#

[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; }
}