2

直接クラスを持たない戻り値の型を 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 のコンストラクターが作成され、それらのコンストラクターが存在しないため、この型を返すことはできません。

誰でもこれについて考えていますか?

4

1 に答える 1

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() { }
}

プロトコルのすべてのメソッドを必ず実装してください。

必要に応じて、この新しいクラスをバインド プロジェクトに配置することもできます。

于 2012-06-19T12:28:53.223 に答える