2

我有一個Windows Phone 7.1項目,其中包含一個可移植類庫,專門用於SL4,.Net4.5,WP7.5,Store Apps,但這不適用:http://msdn.microsoft.com/en-us/library/dd642331.aspx在Windows Phone 7.1 /便攜式類庫中使用System.Lazy

它說它應該在.Net 4.5中可用。當然,我可以自己編程,但我更喜歡使用框架提供的功能。

如果我切換到Windows Phone 8(並刪除SL4),它可用。任何黑客可能使其工作目標WP7.5/SL4?

回答

2

你需要自己實現WP7.5和SL4。但是,您可以在已支持它的平臺上(即.NET 4.5,WP8等)使用它,這樣它將使用內置版本(因此您可以與其他使用「官方」版本的庫共享它。

基本上,創建你的實現作爲一個PCL,以你想要的所有平臺爲目標,然後創建另一個PCL作爲支持System.Lazy的平臺,第二個庫應該具有與第一個完全相同的程序集標識,但應該使用TypeForwardedToAttribute轉發到現有版本的類型

然後,針對更廣泛平臺的PCL可以使用您創建的第一個程序集,而針對特定平臺的項目或PCL定位較窄的平臺可以參考第二個。通過將它們打包到NuGet包中,您可以輕鬆地從正確的項目中引用正確版本的程序集。