Sharpie 绑定 objective-c @protocols 问题
Sharpie binding objective-c @protocols issue
我正在使用 sharpie
bind
命令为 xamarin
的 iOS
库获取 API 接口
sharpie bind --namespace=XXX --sdk=iphoneos9.2 Headers/*.h
@protocol
绑定有问题:
The type or namespace name `IProfileDelegate' could not be found. Are you missing an assembly reference?
这是它的生成方式:
interface XLibrary : IProfileDelegate
{
[Wrap ("WeakProfileDelegate")]
[NullAllowed]
MB_ProfileDelegate ProfileDelegate { get; set; }
我知道它会创建空 ProfileDelegate
然后编译器或其他东西用方法填充它但我的问题是 IProfileDelegate
找不到。
@protocol ProfileDelegate <NSObject>
@required
- (void)GetProfileFinished:(NSString*)_data;
- (void)SetProfileFinished:(NSString*)_data;
@end
I
符号的区别(我猜这是为@protocols 保留的)。
如何使 sharpie
生成正确的 api 定义?
我能够删除所有 I
前缀并且它编译成功,但我宁愿修复它,不要在每次我需要更新源库时重复此操作。
谢谢
根据Objective Sharpie documentation:
In some cases these generated files might be all you need, however more often the developer will need to manually modify these generated files to fix any issues that could not be automatically handled by the tool (such as those flagged with a Verify attribute).
这意味着您有时需要调整两个生成的文件,ApiDefinitions.cs 和 StructsAndEnums.cs 来解决问题,例如本例中的文件。
您可以详细了解 Objective-C 协议的绑定如何工作,这类似于 C# 接口,但又不完全 in the binding documentation。
请记住,所有 obj-c 协议都充当接口或抽象 class 我建议放置 "protocol, model and set base type as nsobject, another thing all the methods or properties maked as a "required" 您需要将其指定为抽象
[Protocol, Model]
[BaseType (typeof(NSObject))]
interface myAwesomeDelegate
{
[Abstract]
[Export(...)]
void myRequiredMethod(uint param1)
[Export(...)]
void anotherMethod()
}
希望这能帮助您解决问题
我正在使用 sharpie
bind
命令为 xamarin
iOS
库获取 API 接口
sharpie bind --namespace=XXX --sdk=iphoneos9.2 Headers/*.h
@protocol
绑定有问题:
The type or namespace name `IProfileDelegate' could not be found. Are you missing an assembly reference?
这是它的生成方式:
interface XLibrary : IProfileDelegate
{
[Wrap ("WeakProfileDelegate")]
[NullAllowed]
MB_ProfileDelegate ProfileDelegate { get; set; }
我知道它会创建空 ProfileDelegate
然后编译器或其他东西用方法填充它但我的问题是 IProfileDelegate
找不到。
@protocol ProfileDelegate <NSObject>
@required
- (void)GetProfileFinished:(NSString*)_data;
- (void)SetProfileFinished:(NSString*)_data;
@end
I
符号的区别(我猜这是为@protocols 保留的)。
如何使 sharpie
生成正确的 api 定义?
我能够删除所有 I
前缀并且它编译成功,但我宁愿修复它,不要在每次我需要更新源库时重复此操作。
谢谢
根据Objective Sharpie documentation:
In some cases these generated files might be all you need, however more often the developer will need to manually modify these generated files to fix any issues that could not be automatically handled by the tool (such as those flagged with a Verify attribute).
这意味着您有时需要调整两个生成的文件,ApiDefinitions.cs 和 StructsAndEnums.cs 来解决问题,例如本例中的文件。
您可以详细了解 Objective-C 协议的绑定如何工作,这类似于 C# 接口,但又不完全 in the binding documentation。
请记住,所有 obj-c 协议都充当接口或抽象 class 我建议放置 "protocol, model and set base type as nsobject, another thing all the methods or properties maked as a "required" 您需要将其指定为抽象
[Protocol, Model]
[BaseType (typeof(NSObject))]
interface myAwesomeDelegate
{
[Abstract]
[Export(...)]
void myRequiredMethod(uint param1)
[Export(...)]
void anotherMethod()
}
希望这能帮助您解决问题