1

我正在尝试在此处绑定 Google SignIn SDK 2.0

我对生成的代表具体类而不是 ISignInDelegate 接口的代表有疑问。

这个 ApiDefinition 有什么问题?

[BaseType (typeof (NSObject), Name = "GIDSignInDelegate")]
    [Protocol]
    [Model] 
    public interface SignInDelegate
    {
        // @required -(void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error;
        [Abstract]
        [Export ("signIn:didSignInForUser:withError:"), EventArgs ("SignInDelegateDidSignInForUser")]
        void DidSignInForUser (SignIn signIn, GoogleUser user, NSError error);

        // @optional -(void)signIn:(GIDSignIn *)signIn didDisconnectWithUser:(GIDGoogleUser *)user withError:(NSError *)error;
        [Export ("signIn:didDisconnectWithUser:withError:"), EventArgs ("SignInDelegateDidDisconnect")]
        void DidDisconnect (SignIn signIn, GoogleUser user, NSError error);
    }
4

1 回答 1

2

你展示的很好,但部分不完整。您要求生成协议(接口)和模型(具体)类型。这很好,但名称是模型的(并且协议是使用I前缀生成的)。

从您的链接中,我看到您的委托属性是SignInDelegate按照它的类型生成的,例如

public SignInDelegate Delegate {

这就是模型(具体)类型,可能是因为它是您创建绑定的方式(到模型,而不是协议)。如果是这种情况,那么只需添加

interface ISignInDelegate {}

在您的绑定文件中(例如,就在绑定的上方SignInDelegate)并将此类型用于委托属性,例如

public ISignInDelegate Delegate { ... }

IOW 您只是提供(较早)生成器将产生的内容,并让您在编写绑定时使用接口(用于协议)。

于 2015-07-28T21:04:25.283 回答