2

У меня есть проект Windows Phone 7.1 с портативной библиотекой классов, ориентированный на SL4, .Net4.5, WP7.5, Store Apps, но это недоступно: http://msdn.microsoft.com/en-us/library/dd642331.aspxИспользование System.Lazy в Windows Phone 7.1/Portable Class Library

В нем говорится, что он должен быть доступен в .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.

Смежные вопросы