Xamarin便携式库 - 如何共享类

时间:2016-03-30 16:47:36

标签: xamarin azure-storage portable-class-library

我正在构建一个项目,其中包含在Azure中托管的MVC Web Api和iOS应用程序。我试图使用Xamarin来构建应用程序。据我了解,我应该在我的Xamarin项目中使用一个可移植的类库,以允许我在我的Web Api项目和Xamarin应用程序之间共享代码,以及在其他平台上的任何未来应用程序,如android。

因此,我想把我的模型放在便携式库中。应用程序和web api将来回传递这些模型。但是便携式库没有Azure表存储库。它甚至没有一些非常基本的东西。我的模型需要引用Azure存储库,以便将实例保存到存储中。

使此代码可共享的最佳方法是什么?显然我需要复制我的模型类,以便它们可以存在于每个位置。但是,PCL中的那些人是否应该继承Web Api项目中的那些人?反之亦然?是否应该有一个继承自的接口(实际上Azure表存储库要求类已经从ITableEntity继承...)。只是寻找在Web Api项目和Xamarin项目使用的PCL之间共享这些类的最佳方法。

1 个答案:

答案 0 :(得分:3)

使用PCL - 便携式类库是一个很好的入门方式!在共享代码之前,您可能想要了解一些怪癖。

  • PCL配置文件是一组有限的API。这意味着可能不包含某些类/程序集。您通常可以通过MSDN查找类/程序集,看看它是否在类名旁边有一个PCL图标。
  • 如果您尝试使用的库的程序集不在当前PCL配置文件中,但可以在本机平台上找到,则需要使用IoC / DI模式。

  • 希望您使用的库支持PCL。否则,您将需要一个支持PCL配置文件的库。 (您可以通过下载.nupkg,解压缩并查看libs文件夹来查看此内容。 注意:您可能需要查看Prerelease NuGet频道以获取PCL支持。有时您可以找到一个开源项目并删除/替换某些程序集/代码以使其Portable

一般指南:

  • POCO中简化您的PCL课程。如果您需要添加到模型中的特定于平台的怪癖,请在该平台上创建一个继承自简单PCL模型的模型层。 EX:您的Web API具有特定的[Attribute]标记或界面,您需要将其应用于模型。您可能已经有一个模型,例如Person,它是PCL中的一个简单的POCO类,然后您可以创建一个可能继承PersonApiEntity的{​​{1}}模型以及任何特定于平台的API需要申请。

  • PCL配置文件似乎不支持Person / ITableEntity

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