Xamarin iOS绑定库重复构造函数问题

时间:2017-03-06 20:23:06

标签: xamarin xamarin.ios native objective-sharpie xamarin-binding

我在Xamarin iOS绑定库中存在重复构造函数的问题,其中代码由来自第三方SDK代码的sharpie工具生成。基本上C#生成的接口使用NSFileHandle作为基类型,并且SDK头文件在其子类中声明相同的指定初始化器,就像在NSFileHandler中一样,因此我得到"成员...已经定义了错误"因为现在绑定库正在生成C#构造函数两次 - 第一次从基类开始,第二次从子类初始化器生成。

Objective-C代码:

@interface MyFileHandle : NSFileHandle
//...
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
//...

C#绑定库代码:

[BaseType(typeof(NSFileHandle))]
public interface MyFileHandle
{
    //...
    [Export("initWithCoder:")]
    [DesignatedInitializer]
    IntPtr Constructor(NSCoder coder);
    //...
}

绑定库生成的代码(* .g.cs):

[Register("MyFileHandle", true)]
public unsafe partial class MyFileHandle : NSFileHandle {
    //...
    [CompilerGenerated]
    [DesignatedInitializer]
    [EditorBrowsable (EditorBrowsableState.Advanced)]
    [Export ("initWithCoder:")]
    public MyFileHandle (NSCoder coder) : base (NSObjectFlag.Empty)
    {
        //...
    }

    [Export ("initWithCoder:")]
    [DesignatedInitializer]
    [CompilerGenerated]
    public MyFileHandle (NSCoder coder)
        : base (NSObjectFlag.Empty)
    {
       //...
    }
    //...
}

如何防止绑定库两次生成构造函数,从而摆脱错误?

1 个答案:

答案 0 :(得分:0)

似乎您可以像@SushiHangover建议的那样从ApiDefinitions.cs中删除重复的构造函数。