爲什麼Windows Phone 7完全支持C#規範,而唯一可用的語言是C#?好吧,我可以理解缺乏「動態」支持,但爲什麼不支持對稱協變?爲什麼不是我們熟悉的第三方庫,並且我們使用的服務器桌面項目與Phone 7不兼容?如果我們仍然在這裏結束,有一箇中間IL代碼有什麼意義?爲什麼Windows Phone 7不完全支持C#規範?
回答
Windows Phone 7並不完全支持您習慣的所有.NET Framework功能,因爲它基於Silverlight構建。
Silverlight被設計爲不支持全套功能,因爲它是一個輕量級的運行時(而不是要求每個用戶下載整個.NET Framework來運行Silverlight應用程序)。
請記住,它在Compact Framework CLR上運行 - 它沒有桌面CLR的所有功能。
編輯:經過一番拖網之後,我發現generic variance isn't supported in the Compact Framework(或者至少在2005年還沒有回來,我懷疑它還沒有實施,因爲直到最近幾乎沒有什麼用處):
不支持方差修飾符。雖然方差/協方差是泛型總體ECMA規範的一部分,並且爲完整的.NET CLR實現,但它不用於基類庫或C#和VB。
好吧,它不會「完全支持」C#4(絕對最新版本),但是您是否知道任何不支持的C#3語言功能?
就圖書館而言,你正在處理的框架大致基於Silverlight 3,但帶有一些Silverlight 4位,並刪除了「桌面」Silverlight的各個方面。 (編輯:根據評論中的鏈接,它應該包含所有的Silverlight 3的API。我不確定這是否準確或不......)換句話說,它是它自己的野獸,真的。儘管IL本身可能是可移植的,但當各種API被移除時,很難保證兼容性。但是,在很多情況下,您可以重建庫來定位WP7。我同意這樣做很煩人,但它比他們根本沒有的更好。
編輯:引文我聲稱它使用CF CLR:
Windows Phone 7 Series Developer General FAQ:
我可以使用什麼樣的技術和工具,以程序爲Windows Phone 7系列?
您目前可以使用基於Compact Framework的Silverlight和XNA的託管語言C#。我可以使用Windows窗體嗎?
不,Windows Forms 7不包含在 Windows Phone 7系列中的Compact Framework版本中。
(或更高版本)
我可以使用在Silverlight XNA庫調用?
Silverlight和XNA在Compact Framework中共享一個共同的代碼庫。如果一個調用不是基於GUI的,大多數情況下它可以在Silverlight和XNA之間共享。
對於從Windows桌面來的Windows Phone 7(WP7)首先,我要澄清,即在WP7運行的運行時(CLR)是不一樣的開發商作爲桌面上運行的那個。 WP7運行時被稱爲.NET Compact Framework(NETCF),它的工作方式與「桌面CLR」不同。
以及IL的現有libriries和sence? – sfedorov1982 2010-09-29 19:04:13
它運行在Silverlight for Windows Phone上,它既不是CF也不是Silverlight 3或4.它缺少許多功能,它存在於.NET CF中(我主要談論這個庫),所以稱它爲基於CF的是誤導性的。 – 2010-09-29 19:05:34
@Eugene:CLR是Compact Framework CLR,而不是Silverlight的普通CoreCLR。我會編輯澄清。 – 2010-09-29 19:16:31
如果你使用SL,連接到Web服務,那麼你可以(應該)保持移動應用的骨感與吸服務器上的脂肪...
聽起來很簡單,我知道,但很多窺視TRY將所有責任委託給「應用」 - 這是不好的做法。如果您的'網站'符合REST標準,那麼您應該使您的應用程序與您的'昂貴'的基於服務器的邏輯純粹地進行json/xml調用。
無論如何,這是我們如何做到這一點:)
當然,但是這與WinPhone上C#實現的問題有關嗎? – ctacke 2010-09-29 23:07:18
- 1. Windows Phone 7:不支持現有的庫?
- 2. 不支持Android JDK 6/JDK 7完全?
- 3. 爲什麼RestSharp不支持Windows Phone上的同步請求?
- 4. 支持Windows Phone 7和Silverlight的REST庫?
- 5. Windows Phone 7瀏覽器支持HTML 5
- 6. Windows Phone 7 - 自定義瓷磚支持
- 7. Windows Phone 7/8上的SpatiaLite支持?
- 8. Windows Phone 7沒有數據庫支持
- 9. 是X:支持Windows Phone 7的
- 10. 尋找Windows Phone 7支持的SL4功能的完整列表
- 11. 爲什麼Sitecore 8.2不支持Windows 7操作系統?
- 12. Windows Phone支持Java
- 13. 爲Windows Phone 7
- 14. WmiMonitorBrightnessMethods - Windows 7不支持
- 15. 完全支持
- 16. C#的Windows Phone 8.1剪貼板支持
- 17. facebook-c#-sdk Windows Phone 7身份驗證 - 爲什麼要保密?
- 18. cryptoapi windows 7支持
- 19. 爲什麼C#不支持多繼承?
- 20. Windows Phone 7 SDK C或C++
- 21. ValueError:'max'不是支持的規範
- 22. Sencha支持Windows Phone嗎?
- 23. mvvmcross支持windows phone 8嗎?
- 24. TextPad和Unicode:完全支持?
- 25. Windows Phone 8不支持angularjs路由
- 26. Windows Phone 8.1不支持SQLite Silverlight
- 27. Ruby 1.9不支持Unicode規範化
- 28. .NET 4.6在Unity中不完全支持?
- 29. 規劃Windows Phone 7應用程序
- 30. 在Visual Studio中完全支持遠程連接到Windows Phone 8模擬器
IL代碼很可能是與桌面.NET兼容,但如果IL代碼使用上不存在WM7模塊也沒關係。 Personlly我認爲爲桌面開發的庫在WM7上使用有限,因爲它們可能太大而且內存很大。我正在探索使用源引用而不是二進制引用來共享桌面和Silverlight之間的代碼。這樣也可以調整大小。 – FuleSnabel 2010-09-29 19:13:55
僅供參考,C#不是* WP7唯一的語言。 VB支持http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/09/23/visual-basic-comes-to-windows-phone-7.aspx和F#已知工作(即使沒有明確支持) – ctacke 2010-09-29 19:54:03