我正在构建一个项目,其中包含在Azure中托管的MVC Web Api和iOS应用程序。我试图使用Xamarin来构建应用程序。据我了解,我应该在我的Xamarin项目中使用一个可移植的类库,以允许我在我的Web Api项目和Xamarin应用程序之间共享代码,以及在其他平台上的任何未来应用程序,如android。
因此,我想把我的模型放在便携式库中。应用程序和web api将来回传递这些模型。但是便携式库没有Azure表存储库。它甚至没有一些非常基本的东西。我的模型需要引用Azure存储库,以便将实例保存到存储中。
使此代码可共享的最佳方法是什么?显然我需要复制我的模型类,以便它们可以存在于每个位置。但是,PCL中的那些人是否应该继承Web Api项目中的那些人?反之亦然?是否应该有一个继承自的接口(实际上Azure表存储库要求类已经从ITableEntity继承...)。只是寻找在Web Api项目和Xamarin项目使用的PCL之间共享这些类的最佳方法。
答案 0 :(得分:3)
使用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)