Monotouch派生类来自本机类

时间:2012-02-04 18:31:38

标签: objective-c binding xamarin.ios

我正在尝试派生从iCarousel本机库编译的本机类(使用this example中描述的LinkWith方法)。 使用生成的绑定时,一切都很完美:

iCarousel carousel = new iCarousel( new RectangleF(0, 0, 300, 300) );

但是在尝试创建这个派生类时:

public class Carousel2 : iCarousel
{

    public Carousel2( RectangleF rect ) : base(rect)
    {
            Console.WriteLine("do something");
    }

}

并像这样使用它:

Carousel2 carousel = new Carousel2( new RectangleF(0, 0, 300, 300) );

它编译但它只是停止工作,没有错误。这是我缺少的东西吗?

更新:我在这里放了objective-c标头和ApiDefinition.cs源代码: http://dantes-andreea.blogspot.com/2012/02/icarousel-monotouch-binding-code.html

1 个答案:

答案 0 :(得分:2)

我认为你需要在生成绑定时将-e传递给btouch,否则它们将不是子类。

默认情况下,btouch不会生成可子类化的类型,因为它们有点慢。

<强>更新

我错了,-e开关必须传递给btouch以生成子类可绑定的绑定。不幸的是,这个开关无条件地通过。已提交bug report

你可以通过在MonoDevelop构建项目之后手动运行btouch命令来解决它(你构建绑定项目,c&amp; p btouch命令行并删除-e开关)。然后,您还必须手动运行任何后续步骤。