我在Xamarin Forms Android项目中创建了一个OAuth2Service类,该类继承了IOAuth2Service接口。我需要在类库中使用该类,以便我可以在Xamarin Forms应用程序中执行google身份验证。但是,尽管我将应用程序类设置为接受IOAuth2Service类型的参数,但我仍然收到上述错误消息。这是我的“ App.Xaml.cs”,其中包含Application类。我该怎么办?
public partial class Application : Xamarin.Forms.Application
{
public Application(IOAuth2Service oAuth2Service)
{
InitializeComponent();
MainPage = new NavigationPage(new LoginPage(oAuth2Service));
}
protected override void OnStart()
{
AppCenter.Start("android=ced94d85-cb85-4ec2-8411-96864a7ec23e;" +
"uwp={Your UWP App secret here};" +
"ios={Your iOS App secret here}",
typeof(Analytics), typeof(Crashes));
}
}
答案 0 :(得分:0)
为什么不像下面的代码那样在OAuth2Service
的构造函数中实例化Application
类?将OAuth2Service
类放在PCL中。
public Application()
{
InitializeComponent();
OAuth2Service oAuth2Service=new OAuth2Service ();
MainPage = new NavigationPage(new LoginPage(oAuth2Service));
}
如果IOAuth2Service
在xxxxx.Droid或xxxxx.IOS文件夹中。您需要将IOAuth2Service
转移到PCL。在Android中,您可以使用OnCreate
MainActivity.cs
方法实例化它
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
OAuth2Service oAuth2Service = new OAuth2Service ();
LoadApplication(new App(oAuth2Service));
}
在IOS中,您可以使用FinishedLaunching
的{{1}}方法实例化它
AppDelegate.cs
这是 public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
OAuth2Service oAuth2Service = new OAuth2Service ();
LoadApplication(new App(oAuth2Service));
return base.FinishedLaunching(app, options);
}
类。
Application
答案 1 :(得分:0)
IOAuth2Service实际上是一个接口,而不是一个类。我认为您不能从接口创建实例对象。在做出您建议的更改后,我是正确的原因。我收到错误消息:“无法创建抽象类或接口'IOAuth2Service'的实例”