似乎大多数关于将Objective-C库绑定到c#的示例显示方法和属性,但是如何处理声明的实例变量?
以下是.h文件的示例我试图为其创建绑定:
@interface NdefRecord : NSObject
{
@public
uint8_t Flags;
NDEF_TNF_Type Tnf;
uint8_t TypeLength;
uint8_t *Type;
uint8_t IdLength;
uint8_t *Id;
uint32_t PayloadLength;
uint8_t *PayloadData;
}
/**
Initialize this record.
- Optional: Since member fields are public, you can also set them directly.
*/
- (id) init:(NDEF_TNF_Type)tnf type:(NSData*)type Id:(NSData*)IdBytes payload:(NSData*)payload;
/**
Parse an NDEF Record from raw bytes.
*/
- (BOOL) parse:(UInt8*)data;
/**
Returns this entire NDEF Record as a byte array.
*/
- (uint32_t) toByteArray:(UInt8*)buffer;
...
@end
在我的绑定项目中,诸如parse:方法之类的东西很容易绑定,但是像ObjectiveLeng和* Type这样的东西被Objective Sharpie错过了,而且我似乎没有任何东西可以正常创建。
在iOS XCode项目中,使用如下语法访问这些变量:
record->TypeLength
代替[record TypeLength]
,这使我相信一个简单的绑定,如:
[Export ("TypeLength")]
Byte TypeLength { get; set; }
无法上班。
我完全坚持这里的解决方案,所以非常感谢任何指导!
答案 0 :(得分:1)
绑定工具不支持访问类的内部字段,这是您尝试在此处执行的操作。
您可以使用[导出]绑定的唯一内容是实际属性和方法。
您需要更改该库以向这些内部公开属性。