如何分享课程

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

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

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


使用PCL - 可移植类库是开始的好方法! 在分享您的代码之前,您可能想了解一些怪癖。

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

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

  • 一般准则:

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

  • 似乎ITableEntity / TableEntity在PCL配置文件中不受支持。

  • 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)

    链接地址: http://www.djcxy.com/p/68863.html

    上一篇: how to share classes

    下一篇: Accessing the serial port in a portable class library in C#