当我尝试运行项目时,出现了这样的错误:“ System.NullReferenceException:对象引用未设置为对象的实例”
指向此代码: sqliteconnection = DependencyService.Get()。GetConnection();
这是我针对数据库操作的课程:
namespace DevoApp.DevoAppFinal.Helpers
{
public class DatabaseHelper
{
static SQLiteConnection sqliteconnection;
public const string DbFileName = "Devotion.db";
public DatabaseHelper()
{
sqliteconnection = DependencyService.Get<ISQLite>().GetConnection();
sqliteconnection.CreateTable<Devotion>();
}
// Get All Contact data
public List<Devotion> GetAllDevotionsData()
{
return (from data in sqliteconnection.Table<Devotion>() select data).ToList();
}
//Get Specific Contact data
public Devotion GetDevotionData(int id)
{
return sqliteconnection.Table<Devotion>().FirstOrDefault(t => t.devotionalId == id);
}
// Delete all Contacts Data
public void DeleteAllDevotions()
{
sqliteconnection.DeleteAll<Devotion>();
}
// Delete Specific Contact
public void DeleteDevotion(int id)
{
sqliteconnection.Delete<Devotion>(id);
}
// Insert new Contact to DB
public void InsertDevotion(Devotion contact)
{
sqliteconnection.Insert(contact);
}
// Update Contact Data
public void UpdateDevotion(Devotion contact)
{
sqliteconnection.Update(contact);
}
}
}
答案 0 :(得分:0)
使用DependencyService时,必须在每个目标平台项目中实现该接口。
在这种情况下,您应该在目标平台(即iOS和Android)上实现ISQLite接口。
要使Xamarin在运行时找到它,您将必须使用名称空间上方的Dependency
属性来注册实现。根据您的项目的一些假设,观察以下示例。
在共享库中,您已经声明了接口:
public interface ISQLite
{
// Members here
}
那儿没有幻想。然后,对于每个平台,要运行该应用程序,请执行以下操作:
[assembly: Xamarin.Forms.Dependency (typeof (SQLiteImplementation_iOS))]
namespace DevoApp.DevoAppFinal.iOS
{
public class SQLiteImplementation_iOS : ISQLite
{
// ... Your code
}
}
从错误中看,您似乎忘记了添加属性