簡體   English   中英

如何在共享通用項目和后台任務之間共享代碼?

[英]How can I share code between a Shared Universal project and a Background Task?

現在,我有一個通用項目,其中主要包含業務邏輯和模型。 我可以從Windows Phone項目和Windows項目中訪問這些文件。

但是,當我添加一個后台任務時,我也想訪問該共享邏輯,因為否則我將不得不在后台任務中復制大部分代碼。

我知道您可以執行“添加為鏈接”,但這會導致如下編譯錯誤:

方法“ MyProject.Model.Playlist.Tracks.get()”在其簽名中具有類型為“ System.Collections.ObjectModel.ObservableCollection”的參數。 盡管此通用類型不是有效的Windows運行時類型,但是該類型或其通用參數實現的接口是有效的Windows運行時類型。 考慮將方法簽名中的“ System.Collections.ObjectModel.ObservableCollection”類型改為以下類型之一:“ System.Collections.Generic.IList,System.Collections.Generic.IReadOnlyList,System.Collections.Generic.IEnumerable” 。

通過在需要的函數/類上使用internal關鍵字,或我的代碼轉換為建議的類型,可以解決這些問題。

不幸的是,我認為這是不可能的,因為SQLiteNet-Extensions使用屬性確定其關系,並且僅支持某些類型( Listarray和我添加的ObservableCollection )。

因此,我正在尋找一種在Shared項目和BackgroundTask之間共享代碼的方法,而不會出現“有效的Windows運行時類型”錯誤。

您可以通過創建可移植類庫在Windows Phone和Windows 8應用程序項目之間共享代碼。 然后,您需要在每個使用該庫的項目中添加對該庫的引用。

不幸的是,您受限於目標框架中的共同點。 MSDN詳細介紹了這些。 PCL和您的目標框架的可用成員將出現在Intellisense中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM