我有一个针对以下对象的可移植类库:
.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/