3

外部ライブラリに次のインターフェイス定義があります

@interface AGSGPS : UIView < CLLocationManagerDelegate >

通常、ApiDefinition.csで次のように定義します。

[BaseType (typeof (UIView))]
interface AGSGPS : CLLocationManagerDelegate

これに伴う問題は、とが両方ともUIViewクラスCLLocationManagerDelegateであり、これが背後にある次のコードに分解されることです。

class AGSGPS : UIView, CLLocationManagerDelegate

これはC#では違法です

考え?

4

1 に答える 1

3

オブジェクトを「マップ」する必要はありません。山括弧内のタイプはプロトコルであり、AGSGPS オブジェクトがそのプロトコルを採用していることを意味します。

こちらのドキュメントを確認してください

ここで、プロトコルを採用するということは、オブジェクトがすべてのプロトコルのメソッドを実装する必要があることを意味します。ApiDefinition でこれを行うには、CLLocationManagerDelegate のメソッドを AGSGPS タイプに属しているかのように扱います。

[BaseType (typeof (UIView))]
interface AGSGPS
{

    [Export("locationManager:didUpdateHeading:")]
    void UpdatedHeading(CLLocationManager lman, CLHeading heading);

    // etc, include all CLLocationManagerDelegate's methods
}
于 2012-05-23T19:09:57.430 に答える