Xamarin.ios 什么是正确的单触式装订?

Xamarin.ios 什么是正确的单触式装订?,xamarin.ios,xamarin,Xamarin.ios,Xamarin,似乎大多数关于将Objective-C库绑定到C#的示例都显示了方法和属性,但是如何处理声明的实例变量呢 下面是我试图为其创建绑定的.h文件的一个示例: @interface NdefRecord : NSObject { @public uint8_t Flags; NDEF_TNF_Type Tnf; uint8_t TypeLength;

似乎大多数关于将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:方法这样的东西很容易绑定,但是像TypeLength和*Type这样的东西被Objective Sharpie遗漏了,而且我手工创建的东西似乎都不能正常工作

在iOS XCode项目中,使用如下语法访问这些变量:
record->TypeLength
而不是
[record TypeLength]
,这让我相信一个简单的绑定,比如:

[Export ("TypeLength")]
Byte TypeLength { get; set; }
这是行不通的


我完全被困在这里的解决方案,所以任何指导是非常感谢

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

使用[Export]只能绑定实际的属性和方法


您需要更改该库以将属性公开给这些内部组件。

您是否尝试使用公共变量而不是属性?”公共字节TypeLength;'和“public IntPtr Type;”我以前没有试过,但当我试过的时候,Xamarin Studio抱怨说接口不能包含字段或常量,我想是的。如果您不能解决它,那么您可以尝试在它周围创建一个ObjC包装器并公开不同的类型。似乎您可以完全忽略它们,因为它们在函数调用中是公开的,不是吗?不幸的是,这些成员变量没有在其他地方公开,因此包装器可能是解决方案。我希望在我走上这条路之前,确保绑定中没有其他属性或其他构造可以完成这一任务。但是感谢包装器的想法——这将解决问题。感谢米格尔给出明确的答案。要是我能改变图书馆就好了。它是由NFC附件的制造商提供的。我会看看他们是否有一个有帮助的更新,但除此之外,我想这取决于SKall建议的ObjC包装器。