PCL中的System.ComponentModel.DataAnnotations与WinPhone一样使用"microsoft bcl portability pack"?

Yas*_*adi 6 .net c# portable-class-library

我有一个便携式类库,其目标如下:

.NET + Silverlight + WinRT + WinPhone + Android + iOS

WinPhone中不存在"System.ComponentModel.DataAnnotations" namesapce

所以我在代码中无法访问该命名空间

如何像"microsoft bcl portability pack"一样解决这个问题

此包提供对诸如"CallerMemberNameAttribute"之类的属性和类的访问,但在运行时它将这些类映射到它们的等效实现(如果存在).

来自" http://www.nuget.org/packages/Microsoft.Bcl/ ":

这些类型与其后来的版本等效"统一".例如,在.NET Framework 4.5上运行时,运行时将看到此程序包中的IProgress与平台中已有的类型相同.

Dan*_*ted 4

您应该能够使用“诱饵和切换”PCL 技术来做到这一点。

在这种情况下,您将创建数据注释属性的可移植实现,并在支持“真实”版本的平台上“切换”到类型转发到这些版本的库。另请参阅此答案:/sf/answers/1123266791/

如果您这样做,如果您可以将其作为 OSS 项目和 NuGet 上的包发布,以便其他人可以从中受益,那就太好了。这是一个相当常见的请求。

  • 有人这样做了:https://github.com/ryanhorath/PortableDataAnnotations,Install-Package Portable.DataAnnotations。 (3认同)