我有这段代码可以在 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 类。
答案 0 :(得分:2)
您必须创建一个界面,以使用 Dependency Injection 调用共享或可移植类中特定于平台的类。点击此链接 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction。我希望这会有所帮助。