我正在使用适用于Android,iOS和Windows Phone的Xamarin开发跨平台应用程序。我正在创建一个包含所有业务逻辑的PCL库,包括对我的REST API的调用。现在这看起来工作正常,但是,我需要在持久空间中存储一些信息,例如API身份验证密钥等,我想我也可以使用Sqlite,它似乎在所有三个平台上都受支持
我遇到的问题是System.Data
和Mono.Data.Sqlite
似乎在PCL项目的背景下无法使用。
即使我的PCL库无法或不与所需的程序集链接,我至少应该能够在我的PCL库中使用引用(通过using
),对?我的意思是,我应该能够让应用程序负责创建数据库连接,然后使用依赖注入将该连接注入我的库。但似乎我甚至无法在我的代码中引用任何System.Data
和Mono.Data.Sqlite
。
如何使用适用于Android,iOS和Windows Phone的Xamarin在PCL库中抽象数据层?
[1] http://developer.xamarin.com/guides/ios/advanced_topics/system.data/
答案 0 :(得分:1)
我建议使用SQLite.Net.Async。然后,您可以使用DI将平台实现(ISQLitePlatform)注入PCL端。如果您不想使用DI,则另一种选择是使用SQLite-Net PCL。
答案 1 :(得分:0)
我会考虑使用Inversion of Control技术,因此我有一个与PCL兼容的接口或抽象类,然后是这个类的平台特定实现。在启动应用程序时,启动正确的平台特定对象,然后将其传递到PCL兼容库中。