Я использовал NuGet менеджер пакетов для загрузки this packageНе можете найти SQLitePlatformIOS в Sqlite.net PCL
На примере показано:
public class SQLiteFactoryiOS : ISQLiteFactory
{
public SQLite.Net.SQLiteConnection CreateConnection(string dbName)
{
var path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), dbName);
return new SQLite.Net.SQLiteConnection(new SQLitePlatformIOS(), path);
}
}
Проблема я столкнулся в том, что я не могу ссылаться на SQLitePlatformIOS. Я даже нашел его в source code, но я не могу достичь пространства имен .Platform
, поэтому я не могу создать объект SQLitePlatformIOS
.
using SQLite.Net; //.Platform.XamarinIOS <-- Compiler error if I try to reach this
Проект Я использую для ссылки на это портативный проект класса, потому что в папке ссылки я вижу .NET подмножества переносимого.
Структура проекта
IOS MainProject ссылки Пример Портативное проекта Пример референции Портативный Проект SQLite.Net-PCL
В портативном проекта у меня есть
References
.NET Portable Subset
From Packages
SQLite.Net
Packages
SQLite.Net-PCL
Data
Repositories
ExampleRepository.cs
Мой пример хранилищу is
using System;
using Example.Data.DTO;
using Example.Models.Properties;
using SQLite.Net;
namespace Example.Data.Repositories
{
public class ExampleRepository(string dbPath)
{
using (var db = new SQLite.Net.SQLiteConnection(new SQLitePlatformIOS() /* Can't reference */, dbPath))
{
db.CreateTable<ExampleDTO>();
}
}
}
И я называю этот класс из проекта iOS.
partial void SaveObject(NSObject sender)
{
var objectToSave = CreateObjectFromView();
var dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "Test.db3");
var repo = new ExampleRepository(dbPath);
}
Можете ли вы показать свою структуру проекта? Если вы используете общий код, нет необходимости ссылаться на реализацию iOS в PCL. PCL должен знать только интерфейс.Проект iOS введет правильную реализацию –
Хорошо, дайте мне несколько минут, чтобы изменить свой вопрос. – mac10688
Я просто добавил ссылку SQLite.Net-PCL на мой проект iOS и теперь может ссылаться на пространство имен платформы. Hmm ... – mac10688