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