我正在尝试将没有直接类的返回类型映射到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创建构造函数并且这些构造函数不存在,因此返回此类型失败。
有人想过这个吗?
答案 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() { }
}
确保实施协议的所有方法。
如果愿意,您甚至可以将这个新类放在绑定项目中。