2012-02-01 41 views
1

我有一個類庫,我使用兩個鏈接的項目和鏈接文件技術在.Net Framework和Silverlight之間共享。便攜式類庫是否處理條件語句/引用?

我想將其轉換爲一個便攜式類庫,但我有一個不同的代碼之間的兩個。我目前使用條件編譯器語句分隔這個文件的實現。

#if SILVERLIGHT 
... 
#else 
... 
#endif 

這是PCL的榮譽嗎?

此外,不是silverlight的代碼部分引用第三方常規.Net類庫。 PCL仍在編譯,但是我不能在Silverlight中使用它,因爲這個參考。有什麼辦法可以告訴PCL只將它包含在.Net中?

回答

1

該模式實現編譯時可移植性而不是運行時可移植性。

如果你有大量的特定於Silverlight的代碼,那麼你實際上並沒有一個可移植的庫 - 你應該考慮將Silverlight特有的代碼分解爲一個單獨的程序集,並讓該專用程序集依賴於你的PCL。

如果您的Silverlight特定代碼很少,則可以考慮使用反射在運行時動態綁定到Silverlight依賴項。您的PCL可以在任何情況下使用,但如果Silverlight存在,將會「優雅地升級」到Silverlight。

+0

謝謝。我沒有考慮反思。 – 2012-02-03 00:46:27