2015-06-01 126 views
1

我正在開發一個跨平臺的應用程序,Xamarin適用於Android,iOS和Windows Phone。我創建了一個包含我所有業務邏輯的PCL庫,包括對我的REST API的調用。現在,這似乎工作得很好,但是,我需要將信息存儲在持久空間中,比如API認證密鑰等,我想我可能會使用Sqlite來實現這一點,它似乎在所有三個平臺上都受支持。Xamarin PCL庫和Sqlite數據存儲

我遇到的問題是System.DataMono.Data.Sqlite在PCL項目的上下文中似乎不可用。

即使我的PCL庫不能,或者不與所需的組件鏈接,我應該至少能夠在我的PCL庫使用引用(通過using),對不對?我的意思是,我應該可以讓應用程序負責創建數據庫連接,然後使用依賴注入將該連接注入到我的庫中。但似乎我甚至不能在我的代碼中引用任何System.DataMono.Data.Sqlite

如何用Xamarin for Android,iOS和Windows Phone在PCL庫中抽象我的數據層?

[1] http://developer.xamarin.com/guides/ios/advanced_topics/system.data/

回答

0

我會在看使用控制技術的反轉,所以我有一個接口或抽象類,它是兼容的PCL然後一個平臺特定實現這個類的。在應用程序啓動時,啓動正確的平臺特定對象,然後傳入PCL兼容庫。

+0

只是進一步的想法,你不應該需要編寫你的數據訪問每個平臺只是一個實現應該是足夠的可能使用像SQLite.Net庫的東西。 (通過nuget抓取)。 該庫不符合PCL,因此使用ioc技術 – JSW

+0

我已經在考慮使用依賴注入來實現這一點。這樣,主機應用程序負責獲取將傳遞到PCL實例的SQLite實例,以便它可以對其執行操作。你提到使用接口或抽象類。其中哪些項目會成爲其中的一部分?我的問題是,即使我的PCL庫不需要與任何需求「鏈接」,它仍然需要了解SQLite對象和方法簽名。你如何建議我這樣做? – Luke

+0

我認爲這是你的目標? http://developer.xamarin.com/guides/cross-platform/application_fundamentals/pcl/introduction_to_portable_class_libraries/#PCL_示例 – Luke