Xamarin 可移植库 - 如何共享 类
Xamarin portable library - how to share classes
我正在构建一个项目,其中包括一个托管在 Azure 中的 MVC Web Api 和一个 iOS 应用程序。我正在尝试使用 Xamarin 构建应用程序。据我所知,我应该在我的 Xamarin 项目中使用一个可移植的 class 库,以允许我在我的 Web Api 项目和 Xamarin 应用程序以及其他平台上的任何未来应用程序之间共享代码喜欢 android。
所以我马上就想把我的模型放在便携式库中。应用程序和网络 api 将来回传递这些模型。但是便携式库没有 Azure Table 存储库。它甚至没有一些非常基本的东西。我的模型需要引用 Azure 存储库,以便我可以将实例保存到存储中。
使此代码可共享的最佳方法是什么?显然我需要复制我的模型 classes 以便它们可以存在于每个位置。但是 PCL 中的那些应该继承 Web Api 项目中的那些吗?反之亦然?是否应该有一个接口都继承自(实际上 Azure Table 存储库需要 classes 已经从 ITableEntity 继承......)。只是寻找在 Web Api 项目和 Xamarin 项目使用的 PCL 之间共享这些 classes 的最佳方式。
使用 PCL - 便携式 Class 库是入门的好方法!在共享您的代码之前,您可能需要了解一些怪癖。
- PCL 配置文件是一组有限的 API 可用。这意味着某些 classes/assemblies 可能不包括在内。您通常可以通过 MSDN 查找 class/assembly,看看它的 class 名称旁边是否有一个 PCL 图标。
如果您尝试使用的库有不在当前 PCL 配置文件中但可以在本机平台上找到的程序集,您将需要使用 IoC/DI模式。
希望您使用的库支持 PCL。否则,您将需要一个支持 PCL 配置文件的库。 (您可以通过下载 .nupkg
、解压缩并查看 libs
文件夹来检查这一点)。 注意:您可能需要检查 Prerelease
NuGet 频道以获得 PCL 支持。有时你可以找到一个开源项目和 remove/replace 某些 assemblies/code 使其成为 Portable
.
一般准则:
在 PCL
中保持 POCO
class 简单。如果您有特定于平台的怪癖,您需要添加到模型中,请在该平台上创建一个继承自简单 PCL 模型的模型层。 EX: 您的网站 API 有一个特定的 [Attribute]
标签或界面需要应用于您的模型。您可能已经有一个模型,例如 Person
,它是 PCL 中的一个简单的 POCO class,然后您可以创建一个 PersonApiEntity
模型,它可能继承 Person
以及您需要对其应用的任何特定于平台的 APIs。
PCL 配置文件似乎不支持 ITableEntity
/TableEntity
。
https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.table.itableentity.aspx
源码一目了然(https://github.com/Azure/azure-storage-net/blob/master/Lib/Common/Table/ITableEntity.cs)
我正在构建一个项目,其中包括一个托管在 Azure 中的 MVC Web Api 和一个 iOS 应用程序。我正在尝试使用 Xamarin 构建应用程序。据我所知,我应该在我的 Xamarin 项目中使用一个可移植的 class 库,以允许我在我的 Web Api 项目和 Xamarin 应用程序以及其他平台上的任何未来应用程序之间共享代码喜欢 android。
所以我马上就想把我的模型放在便携式库中。应用程序和网络 api 将来回传递这些模型。但是便携式库没有 Azure Table 存储库。它甚至没有一些非常基本的东西。我的模型需要引用 Azure 存储库,以便我可以将实例保存到存储中。
使此代码可共享的最佳方法是什么?显然我需要复制我的模型 classes 以便它们可以存在于每个位置。但是 PCL 中的那些应该继承 Web Api 项目中的那些吗?反之亦然?是否应该有一个接口都继承自(实际上 Azure Table 存储库需要 classes 已经从 ITableEntity 继承......)。只是寻找在 Web Api 项目和 Xamarin 项目使用的 PCL 之间共享这些 classes 的最佳方式。
使用 PCL - 便携式 Class 库是入门的好方法!在共享您的代码之前,您可能需要了解一些怪癖。
- PCL 配置文件是一组有限的 API 可用。这意味着某些 classes/assemblies 可能不包括在内。您通常可以通过 MSDN 查找 class/assembly,看看它的 class 名称旁边是否有一个 PCL 图标。
如果您尝试使用的库有不在当前 PCL 配置文件中但可以在本机平台上找到的程序集,您将需要使用 IoC/DI模式。
希望您使用的库支持 PCL。否则,您将需要一个支持 PCL 配置文件的库。 (您可以通过下载
.nupkg
、解压缩并查看libs
文件夹来检查这一点)。 注意:您可能需要检查Prerelease
NuGet 频道以获得 PCL 支持。有时你可以找到一个开源项目和 remove/replace 某些 assemblies/code 使其成为Portable
.
一般准则:
在
PCL
中保持POCO
class 简单。如果您有特定于平台的怪癖,您需要添加到模型中,请在该平台上创建一个继承自简单 PCL 模型的模型层。 EX: 您的网站 API 有一个特定的[Attribute]
标签或界面需要应用于您的模型。您可能已经有一个模型,例如Person
,它是 PCL 中的一个简单的 POCO class,然后您可以创建一个PersonApiEntity
模型,它可能继承Person
以及您需要对其应用的任何特定于平台的 APIs。PCL 配置文件似乎不支持
ITableEntity
/TableEntity
。
https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.table.itableentity.aspx
源码一目了然(https://github.com/Azure/azure-storage-net/blob/master/Lib/Common/Table/ITableEntity.cs)