2012-07-19 41 views
11

我已經創建了一個面向.NET Framework 4和Silverlight 5的PCL項目(​​我使用的是Visual Studio 2010的擴展,而不是Visual Studio 2012中的可移植項目模板,如果有的話)。 我想使用System.Linq.Enumerable.Reverse<TSource>()擴展方法來反轉字符串,但它不起作用,因爲編譯器認爲System.String未實現IEnumerable<char>爲什麼String類在便攜庫中實現IEnumerable <char>?

+0

你確定它沒有實現'IEnumerable ',或者是Intellisense只是隱藏它嗎? – CodesInChaos 2012-07-19 09:21:50

+0

是的,我確定,當我嘗試構建它時遇到錯誤。 – 2012-07-19 09:24:41

+0

嗯,只是檢查文檔,'GetEnumerator'確實不是PCL的一部分。什麼是MS思想...... – CodesInChaos 2012-07-19 09:26:30

回答

13

可移植類庫必須將自身限制爲它所承諾支持的所有目標平臺上可用的類和方法。這裏最大的麻煩製造者是WinRT,CLR有一個將WinRT類型映射到託管類型的語言投影。該投影不支持的System.String方法記錄在this answer中。 GetEnumerator()就是其中之一。

+0

這很有道理,因爲我沒有選擇WinRT(實際上,它在框架選擇窗口中被稱爲.NET for Metro風格的應用)作爲目標框架。我想PCL應該作爲選定平臺/框架的交集。 – 2012-07-19 13:29:58

+3

那麼,PCL的意義在於你有可能會選擇WinRT。 – 2012-07-19 13:34:03

+0

似乎我們在這裏有些微不同的想法,但我現在要接受你的答案,因爲我沒有看到任何其他意義。謝謝! – 2012-07-19 18:11:36

相關問題