什么是正确的monotouch绑定?

时间:2014-08-13 23:59:05

标签: xamarin.ios xamarin

似乎大多数关于将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; }

无法上班。

我完全坚持这里的解决方案,所以非常感谢任何指导!

1 个答案:

答案 0 :(得分:1)

绑定工具不支持访问类的内部字段,这是您尝试在此处执行的操作。

您可以使用[导出]绑定的唯一内容是实际属性和方法。

您需要更改该库以向这些内部公开属性。