Xamarin.Forms: Как поместить собственный класс iOS, который реализует интерфейс DependencyService, в отдельную библиотеку iOS - PullRequest
0 голосов
/ 16 мая 2018

У меня есть собственный класс iOS, который реализует Xamarin.Forms DependencyService, так как я хочу повторно использовать этот класс в разных проектах, поэтому я хотел бы извлечь этот класс из моего текущего приложения Xamarin.iOS в отдельную библиотеку Xamarin.iOS .

Вот моя текущая структура проекта:

BDNC (Xamarin.Forms)

--- IHTBluetoothManager (интерфейс DependencyService)

BDNC.iOS (Xamarin.iOS)

--- HTBluetoothManager: IHTBluetoothManager (реализация DependencyService)

Я хочу достичь чего-то вроде:

BDNC (Xamarin.Forms)

--- IHTBluetoothManager (интерфейс DependencyService)

BDNC.iOS (приложение Xamarin.iOS)

--- Коды приложений

HTBluetoothKit (библиотека Xamarin.iOS)

--- HTBluetoothManager: IHTBluetoothManager (реализация DependencyService)

Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Я думаю, что вам нужно создать простой проект и добавить туда свои зависимости и код для каждой платформы.

Xamarin имеет доступ к собственным библиотекам, и вы можете добавлять все, что вам нужно, и работать с API любой библиотеки.

После этого вы можете создать пакет nuget, который вы можете использовать во всех других ваших проектах, и поделиться им с другими, если хотите

0 голосов
/ 17 мая 2018

Я думаю SharedProject будет соответствовать вашему запросу.Щелкните правой кнопкой мыши ваше решение => Добавить проект => в столбце Visual C # и найдите Общий проект:

enter image description here

В этом общем проекте вы можете реализовать свой интерфейс:

public class MyImplementClass : IHTBluetoothManager
{
    public void DoSome()
    {                
        if (Device.RuntimePlatform == Device.iOS)
        {

        }
    }
}

Наконец, когда вы хотите использовать этот DependencyService , добавьте этот общий проект в свое решение.Затем щелкните правой кнопкой мыши ссылку на свой проект ios => Добавить ссылки => на вкладке Shared Project и выберите общий проект, который мы только что добавили.

Кроме того, нам также нужно добавить интерфейсный класс (IHTBluetoothManager) в ваш PCL, чтобы он хорошо работал.

0 голосов
/ 16 мая 2018

Возможно, я отвечаю не на тот вопрос, поэтому, пожалуйста, не стесняйтесь перенаправить меня. Ключевым моментом здесь является то, как вы устанавливаете ссылки в каждом проекте. Если BDNC - это кроссплатформенный проект Xamarin.Forms, а BDNC.iOS - ваш проект по внедрению платформы iOS, вы можете думать о BDNC.iOS как о том, где все объединяется ,

Другими словами, BDNC.iOS должен ссылаться на BDNC , чтобы получить Модели Xamarin.Forms и ViewModels для приложения iOS. Аналогично, чтобы BDNC.iOS реализовал IHTBluetoothManager для iOS, необходимо вызвать методы в HTBluetoothManager . Итак, BDNC.iOS должен ссылаться на HTBluetoothManager .

Когда вы создаете кроссплатформенное приложение с использованием VisualStudio 2017 (Mac или Windows), оно создает для вас ссылку на BDNC в BCNC.iOS . Поэтому единственное, что вам нужно сделать, это создать ссылку на HTBlueToothManager в BCNC.iOS : - В Mac на панели обозревателя решений разверните проект BDNC.iOS , щелкните правой кнопкой мыши папку References и выберите Изменить ссылки ... * во всплывающем меню. , Появится диалоговое окно ** Edit References . Нажмите на вкладку Projects , выберите проект HTBluetoothManager и нажмите [OK] для завершения. - На ПК в панели обозревателя решений разверните проект BDNC.iOS , щелкните правой кнопкой мыши папку References и выберите Добавить ссылку ... * во всплывающем меню. , Появится диалоговое окно ** Reference Manager . Нажмите на раздел Projects (левая полоса), выберите проект HTBluetoothManager и нажмите [OK] для завершения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...