如何分享课程
我正在构建一个包含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配置文件中,但可以在本机平台上找到,则需要使用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#