如何在共享通用项目和后台任务之间共享代码

本文关键字:共享 后台任务 之间 代码 项目 | 更新日期: 2023-09-27 18:29:48

现在我有一个通用项目,它主要包含业务逻辑和模型。这些我可以从Windows Phone项目和Windows项目访问。

但是,当我添加后台任务时,我也想访问该共享逻辑,因为否则我将不得不在后台任务中复制大部分代码。

我知道你可以做"添加为链接",但这会导致如下编译错误:

方法"MyProject.Model.Playlist.Tracs.get()"的签名中有一个类型为"System.Collections.ObjectModel.ObsObservableCollection"的参数。尽管此泛型类型不是有效的Windows运行时类型,但该类型或其泛型参数实现的接口是有效的Windows执行时类型。请考虑将方法签名中的类型"System.Collections.ObjectModel.OObservableCollection"改为以下类型之一:"System.Collections.Generic.IList、System.Collections.Generic.IReadOnlyList、System.Collections.Generic.EEnumerable"。

通过在需要的函数/类上使用internal关键字,或者将我的代码转换为建议的类型,可以解决这些问题。

不幸的是,我认为在我的情况下这是不可能的,因为SQLiteNet扩展使用属性来确定其关系,并且只支持某些类型(Listarray和我添加的ObservableCollection)。

因此,我正在寻找一种在我的共享项目和BackgroundTask之间共享代码的方法,而不会出现"有效的Windows运行时类型"错误。

如何在共享通用项目和后台任务之间共享代码

您可以通过创建可移植类库在Windows Phone和Windows 8应用程序项目之间共享代码。然后,您需要在每个应该使用该库的项目中添加对该库的引用

不幸的是,限制为目标框架中的公共分母。MSDN详细介绍了这些内容。PCL和您的目标框架的可用成员将显示在Intellisense中。