为什么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