簡體   English   中英

為什么Windows Phone 7不完全支持C#規范?

[英]Why doesn't Windows Phone 7 fully support the C# specification?

當Windows Phone 7唯一可用的語言是C#時,為什么Windows Phone 7不能完全支持C#規范? 好吧,我可以理解缺乏“動態”支持,但為什么不支持反協方差? 為什么我們不熟悉的第三方庫以及我們在與Phone 7不兼容的服務器 - 桌面項目中使用? 如果我們仍然在這里,有一個中間的IL代碼有什么意義?

請記住,它在Compact Framework CLR上運行 - 它沒有桌面CLR的所有功能。

編輯:經過一些拖網,我發現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系列開發人員常見問題解答

我可以使用哪些技術和工具為Windows Phone 7系列進行編程?
您目前可以使用基於Compact Framework的Silverlight和XNA的托管語言C#。

我可以使用Windows窗體嗎?
不,Windows Phone 7系列附帶的Compact Framework版本不支持Windows窗體。

(然后)

我可以在Silverlight中使用XNA庫調用嗎?
Silverlight和XNA在Compact Framework中共享一個公共代碼庫。 如果調用不是基於GUI的,則在大多數情況下,它可以在Silverlight和XNA之間共享。

CF團隊成員的博文

對於從Windows桌面訪問Windows Phone 7(WP7)的開發人員,讓我首先澄清一下WP7上運行的運行時(CLR)與桌面上運行的運行時(CLR)不同。 WP7運行時稱為.NET Compact Framework(NETCF),它的工作方式與“桌面CLR”不同。

Windows Phone 7並不完全支持您習慣使用的所有.NET Framework功能,因為它是基於Silverlight構建的。

Silverlight被設計為不支持全套功能,因為它意味着輕量級運行時(而不是要求每個用戶下載整個.NET Framework來運行Silverlight應用程序)。

如果您使用SL,鏈接到Web服務,那么您可以(應該)保持移動應用程序瘦,並在服務器上吸脂...

聽起來很簡單我知道,但很多人都認為將所有責任委托給'app' - 這是不好的做法。 如果你的“網站”符合REST標准,那么你應該將你的應用程序與純粹的json / xml調用對齊你的“昂貴的”基於服務器的邏輯。

無論如何,這就是我們這樣做:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM