我正在尝试派生从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
答案 0 :(得分:2)
我认为你需要在生成绑定时将-e传递给btouch,否则它们将不是子类。
默认情况下,btouch不会生成可子类化的类型,因为它们有点慢。
<强>更新强>
我错了,-e开关必须不传递给btouch以生成子类可绑定的绑定。不幸的是,这个开关无条件地通过。已提交bug report。
你可以通过在MonoDevelop构建项目之后手动运行btouch命令来解决它(你构建绑定项目,c&amp; p btouch命令行并删除-e开关)。然后,您还必须手动运行任何后续步骤。