在不添加新构造函数的情况下向下转换类

时间:2012-06-05 09:16:35

标签: c# inheritance binding casting xamarin.ios

美好的一天,

我正在尝试为(ObjectiveC)

创建绑定
@interface GPUImageView : UIView <GPUImageInput>
{
    GPUImageRotationMode inputRotation;
}

在ApiDefinitions.cs(MonoTouch)中写这个

[BaseType (typeof(UIView))]
interface GPUImageView : GPUImageInput{
    [Export ("initWithFrame:")]
    IntPtr Constructor(RectangleF frame);

    [Export ("autoresizingMask")]
    UIViewAutoresizing AutoResizingMask { get; set;}

    [Export ("addSubView:")]
    void AddSubView(UIView view);
}

我打电话给

时收到“InvalidCastException”
GPUImage.GPUImageView filterView = (GPUImage.GPUImageView)this.View;

我可以创建一个使用反射的构造函数。但它真的是正确的方法吗?

干杯!

1 个答案:

答案 0 :(得分:1)

正如Rolf Bjarne Kvinge指出的那样,解决方案是将Interface Builder中的类类型更改为GPUImageView。这创建了一个应继承自GPImageView的类,而GPImageView又继承自UIView。无需绑定AddSubview。