Используем Xamarin.Forms DependencyService на примере SQLite
Xamarin.Forms включает DependencyService, чтобы позволить общему коду использовать интерфейсы на конкретных платформах, для предоставления доступа к функциям iOS, Android и Windows Phone SDK, из вашего PCL или Shared проекта.
Как работает DependencyService
Есть три части реализации DependencyService
:
- Interface - интерфейс в общем коде, который определяет функциональность, которая требуется от кода платформы.
- Registration - реализация интерфейса на каждой конкретной платформе, вместе с атрибутом сборки, регистров класса так, чтобы
DependencyService
смог создать его экземпляры. - Location - вызов
DependencyService.Get<>
в общем коде, чтобы получить специфичный для платформы экземпляр интерфейса во время выполнения, позволяя тем самым общему коду доступ к базовой платформе.
Реализация и использование
1. Интерфейс
Создание интерфейса в проекте с общим кодом.
using SQLite.Net;
namespace ExamplePortable.Core
{
public interface ISQLite
{
SQLiteConnection GetConnection();
}
}
2. Реализация
Реализация интерфейса для конкретной платформы.
# using ...
[assembly: Dependency(typeof(SQLiteWinPhone))]
namespace ExamplePortable.WinPhone
{
public class SQLiteWinPhone : ISQLite
{
public SQLiteConnection GetConnection()
{
// код метода
}
}
}
3. Использование
Вызываем метод для получения экземпляра класса.
var sqLiteConnection = DependencyService.Get<ISQLite>().GetConnection();
Используемые источники
Теги: памятка, xamarin forms, c#, windows phone, android, ios, sqlite, сниппет