我有一个针对以下对象的可移植类库:

.NET + Silverlight + WinRT + WinPhone +安卓+ iOS

WinPhone 中不存在“System.ComponentModel.DataAnnotations” namespace

所以我无法在代码中访问该 namespace

我该如何解决此问题,例如“Microsoft bcl可移植性包”

该程序包提供对属性和类(例如“CallerMemberNameAttribute”)的访问,但是在运行时,它将把这些类映射到它们的等效实现(如果存在)。

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

这些类型被“统一”为它们的更高版本。例如,在.NET Framework 4.5上运行时,该包的IProgress在运行时将被视为与平台中已经可用的IProgress类型相同。

最佳答案

您应该可以使用"Bait and Switch" PCL technique做到这一点。

在这种情况下,您将创建数据注释属性的可移植实现,并且在支持“实际”版本的平台上,“切换”到类型转换为这些版本的库。另请参阅以下答案:https://stackoverflow.com/a/16046668/1509

如果这样做,可以将其作为OSS项目和程序包发布在NuGet上,这样其他人可以从中受益,那就太好了。这是一个相当普遍的要求。

关于c# - 在PCL和WinPhone中使用System.ComponentModel.DataAnnotations,就像 "microsoft bcl portability pack"吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23967221/

10-14 07:17