0

我在 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)
    {
       //...
    }
    //...
}

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

4

1 回答 1

0

看来您可以像@SushiHangover 建议的那样简单地从 ApiDefinitions.cs 中删除重复的构造函数。

于 2017-03-10T11:03:24.833 回答