如果我有以下(协议,然后是使用该协议的接口),为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
答案 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#。