如何在MonoTouch上映射包含协议实现的返回值类?

时间:2012-06-18 18:35:59

标签: xamarin.ios

我正在尝试将没有直接类的返回类型映射到MonoTouch中的某些东西(因为我不确定等价物是什么)。

例如,如果在btouch中我想绑定结果类型UIView< ProtocolX>定义如下:

- (UIView< ProtocolThing> *)addThing :( Thing *)aThing;

我成功完成了这项工作:

[导出( “addThing:”)] UIView AddThing(Thing aThing);

除非我无法获得ProtocolThing扩展。如果我创建像UIViewProtocolThing这样的中间类型:

// @ interface UIViewProtocolThing:UIView { [BaseType(typeof(UIView))] 接口UIViewProtocolThing:ProtocolThing { ... }

我可以使用UIViewProtocolThing,但由于它为UIViewProtocolThing创建构造函数并且这些构造函数不存在,因此返回此类型失败。

有人想过这个吗?

1 个答案:

答案 0 :(得分:1)

我认为你可以在C#端解决这个问题。在绑定中使用UIView

然后创建一个类似的类:

public class ProtocolView : UIView
{
    //Fill out all the constructors
    public ProtocolView() { }

    public ProtocolView(IntPtr handle) : base (handle) { }

    [Export("myExportForProtocolThing:")
    public virtual void MyExportForProtocolThing() { }
}

确保实施协议的所有方法。

如果愿意,您甚至可以将这个新类放在绑定项目中。