Вы находитесь на странице: 1из 4

3.

Portable class library (PCL) - переносимая библиотека классов

Кросс-платформенные приложения могут строиться с помощью PCL библиотек


(динамических или статических), которые содержат общий платформенно-независимый
код. Такая библиотека подключается к Android или iOS проекту с 121помощью ссылки на
нее, в необходимом месте подключается соответствующее пространство имен, и далее в
приложении используются требуемые классы библиотеки.

3.1 Создание PCL

Для этого необходимо создать новый проект следующего типа:

В качестве библиотеки будет выступать класс-генератор текстов для новых элементов


таблицы, используемой в главном приложении:

using System;
namespace pcl_test
{
public class MyClass
{
     private string[] descriptions = { "Будешь стараться - всё может удасться.",
                                       "Всяк своего счастья кузнец.",
                                       "Дело мастера боится.",
                                       "Не место красит человека, а человек место.",
                                       "Умение всегда найдёт применение.",
                                       "Чему было начало, тому и конец будет."
                                     };

     public MyClass()


     {
     }
     public string GetNewDescription()
     {
         Random rnd = new Random();
         return descriptions[rnd.Next(0, descriptions.Length - 1)];
     }
}
}

3.2 Создание главного приложения 

В результате в решение будут добавлено несколько дополнительных проектов,


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

Начнем с версии для iOS.

Чтобы можно было пользоваться переносимой библиотекой, необходимо выполнить


следующие действия:

1. Собрать проект, содержащий саму библиотеку (встать на имени проекта и ПКМ


выбрать “Собрать ..”).
2.

3. Подключить собранную библиотеку в проект приложения для iOS: (вначале нужно


добавить библиотеку, нажав кнопку “Обзор”). Если библиотека уже присутствует, то
просто поставить галочку и нажать кнопку “ОК”.

3. Добавить использование пространства имен из библиотеки в месте, где


предполагается использование классов и методов библиотеки.

В нашем примере это будет файл ItemNewViewController.cs, в котором содержится


реализация добавления новой строки в таблицу. (Необходимо не забыть подключить
пространство имен). 
Using namespace

По умолчанию, заголовок и текст новой строки пустые. Предлагается с помощью


библиотечного метода GetNewDescription() установить значение описания нового
элемента перед открытием формы добавления нового элемента таблицы.

Это необходимо сделать в методе ViewDidLoad() до назначения функционала


кнопки с помощью следующего кода:

var myClass = new MyClass();


         txtDesc.Text = myClass.GetNewDescription();
3.3 Расширение функционала библиотеки

Самостоятельно добавьте в переносимую библиотеку данные и метод для генерирования


заголовков GetNewTitle(). Примените новый метод в главном приложении iOS.

3.4 Приложение для Android.

Настройка Android приложения выполняется аналогично настройке приложения для iOS.


Местом добавления вызовов библиотеки является файл AddItemActivity.cs, метод
OnCreate(Bundle savedInstanceState):

    var myClass = new MyClass();


    description.Text = myClass.GetNewDescription();
title.Text = myClass.GetNewTitle();