我有一个 Windows Phone 7.1 项目,其中包含针对 SL4、.Net4.5、WP7.5、商店应用程序的便携式类库,但这不可用:http: //msdn.microsoft.com/en-us/library/ dd642331.aspx
它说它应该在.Net 4.5中可用。当然我可以自己编程,但我更喜欢使用框架提供的功能。
如果我更改为 Windows Phone 8(并删除 SL4),它是可用的。有什么技巧可以让它针对 WP7.5 / SL4 工作吗?
我有一个 Windows Phone 7.1 项目,其中包含针对 SL4、.Net4.5、WP7.5、商店应用程序的便携式类库,但这不可用:http: //msdn.microsoft.com/en-us/library/ dd642331.aspx
它说它应该在.Net 4.5中可用。当然我可以自己编程,但我更喜欢使用框架提供的功能。
如果我更改为 Windows Phone 8(并删除 SL4),它是可用的。有什么技巧可以让它针对 WP7.5 / SL4 工作吗?
您需要自己为 WP7.5 和 SL4 实现它。但是,您可以使其在已经支持它的平台(即 .NET 4.5、WP8 等)上使用内置版本(因此您可以与使用“官方”版本的其他库共享它.
基本上,将您的实现创建为针对您想要的所有平台的 PCL。然后针对支持 System.Lazy 的平台创建另一个 PCL。第二个库应该与第一个库具有完全相同的程序集标识,但它应该使用 TypeForwardedToAttribute 转发到该类型的现有版本,而不是类型的实现。
然后,针对更广泛平台的 PCL 可以使用您创建的第一个程序集,而针对特定平台的项目或针对更窄平台的 PCL 可以引用第二个程序集。通过将它们打包到 NuGet 包中,您可以轻松地从正确的项目中引用正确版本的程序集。