我有这段代码在iOS中运行:
namespace Login.iOS
{
class Authenticate
{
public async Task LoginAsync()
{
var client = new Auth0Client(new Auth0ClientOptions
{
Domain = "difiore.auth0.com",
ClientId = "Key goes here"
});
var loginResult = await client.LoginAsync();
}
}
}
以及它与Android的等价物:
namespace Login.Droid
{
class Authenticate
{
public async Task LoginAsync()
{
var client = new Auth0Client(new Auth0ClientOptions
{
Domain = "difiore.auth0.com",
ClientId = "Key goes here"
});
var loginResult = await client.LoginAsync();
}
}
}
由于两者都依赖于专门为平台编写的库,因此它们必须是特定于平台的。
然后我有应该调用的共享代码:
namespace Login
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MainPage : ContentPage
{
public MainPage ()
{
InitializeComponent ();
}
private void Login_Clicked(object sender, EventArgs e)
{
Navigation.PushAsync(new Authenticate());
}
}
}
但是代码行
Navigation.PushAsync(new Authenticate());
显然是错误的,因为它没有识别要调用的例程。
如何从共享的例程中调用特定于平台的例程?这是IOS和Android中的Authenticate类。
您必须使用依赖注入创建一个用于在共享或可移植类中调用特定于平台的类的接口。点击此链接https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction。我希望这有帮助。