Xamarin Forms - вызов метода общего кода из проекта платформы - PullRequest
0 голосов
/ 17 марта 2020

Я прочитал два других вопроса о SO по этому вопросу, и я хотел знать, есть ли хорошее решение для этого сейчас / передовой опыт.

Короче говоря, мы используем SDK, который написан изначально и мы завернули его так, чтобы он работал на Xamarin. Android и Xamarin. iOS. У него есть асинхронные методы обратного вызова. Мне нужно вызывать метод в общем коде, когда, например, в проекте Android получен обратный вызов.

Существует много информации для обратного - использование DependencyService. Как насчет моего сценария? У кого-нибудь есть опыт работы с таким приложением, и каков наилучший подход для поддержания чистоты кода и выполнения этого с использованием MVVM?

Я знаю следующие варианты:

  • Использование stati c Экземпляр приложения - это то, чем мы сейчас занимаемся.
  • MessagingCenter
  • Что-нибудь еще?

На самом деле я никогда не видел, чтобы кто-нибудь рекомендовал использовать MessagingCenter для чего-то еще, кроме связи между ViewModels, поэтому я не уверен, что это рекомендуется здесь. Кроме того, мне нужно знать тип объекта отправителя, поэтому мне нужна ссылка на класс в спецификации платформы c.

1 Ответ

1 голос
/ 19 марта 2020

Я бы порекомендовал вам использовать MessagingCenter для передачи данных или метода вызова между общим проектом и проектом платформы. Вы можете просто отправить новый объект вместо класса в спецификации платформы c.

Кроме того, обратите внимание на использование обработчика событий, как я упоминал в , этот ответ может помочь кому-то, кто хочу вызвать из общего проекта в платформу, указав c один.

Кстати, я имею в виду, вы даже можете передать объект как TSender, если не нужно использовать:

    MessagingCenter.Send<Object>(new object(), "Hi");

    MessagingCenter.Subscribe<Object>(new object(), "Hi", (sender) =>
    {
        // Do something whenever the "Hi" message is received
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...