Google 登录 Xamarin 绑定
Google SignIn Xamarin Binding
我正在尝试绑定 Google SignIn SDK 2.0 here
我对代表具体 class 而不是 ISignInDelegate 接口的 Delegate generated 有疑问。
这个 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);
}
您展示的内容很好,但部分不完整。您要求同时生成协议(接口)和模型(具体)类型。没关系,但名称是针对模型的(协议生成时带有 I
前缀)。
从你的 link 我看到你的委托 属性 是用 SignInDelegate
生成的,因为它是类型,例如
public SignInDelegate Delegate {
这就是模型(具体)类型,可能是因为它是您创建绑定(到模型,而不是协议)的方式。如果是这样,那么只需添加
interface ISignInDelegate {}
在您的绑定文件中(例如,就在 SignInDelegate
的绑定上方)并将此类型用于委托 属性,例如
public ISignInDelegate Delegate { ... }
IOW 您只是(较早地)提供了生成器将生成的内容,并允许您在编写绑定时使用接口(用于协议)。
我正在尝试绑定 Google SignIn SDK 2.0 here
我对代表具体 class 而不是 ISignInDelegate 接口的 Delegate generated 有疑问。
这个 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);
}
您展示的内容很好,但部分不完整。您要求同时生成协议(接口)和模型(具体)类型。没关系,但名称是针对模型的(协议生成时带有 I
前缀)。
从你的 link 我看到你的委托 属性 是用 SignInDelegate
生成的,因为它是类型,例如
public SignInDelegate Delegate {
这就是模型(具体)类型,可能是因为它是您创建绑定(到模型,而不是协议)的方式。如果是这样,那么只需添加
interface ISignInDelegate {}
在您的绑定文件中(例如,就在 SignInDelegate
的绑定上方)并将此类型用于委托 属性,例如
public ISignInDelegate Delegate { ... }
IOW 您只是(较早地)提供了生成器将生成的内容,并允许您在编写绑定时使用接口(用于协议)。