Вызов определенных подпрограмм iOS / Android из общего - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть этот код, который работает в 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());

, очевидно, неверна, так как она не идентифицирует вызываемую подпрограмму.

Как я могу вызвать специфичную для платформы подпрограмму из общей?Это класс Authenticate в IOS и Android.

1 Ответ

0 голосов
/ 17 сентября 2018

Вам необходимо создать интерфейс для вызова определенного класса платформы в разделяемом или переносном классе, используя Зависимость Инъекция .Перейдите по этой ссылке https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction. Надеюсь, это поможет.

...