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 回答