2012-07-19 14 views
11

Ho creato un progetto PCL destinato a .NET Framework 4 e Silverlight 5 (utilizzo un'estensione per Visual Studio 2010, non un modello di progetto portatile da Visual Studio 2012, se ciò è importante). Sto cercando di invertire una stringa usando il metodo di estensione System.Linq.Enumerable.Reverse<TSource>(), ma non funziona perché il compilatore pensa che System.String non implementa IEnumerable<char>.Perché la classe String non implementa IEnumerable <char> nella libreria portatile?

+0

Sei sicuro che non implementa 'IEnumerable ', o Intellisense lo sta solo nascondendo? – CodesInChaos

+0

Sì, sono sicuro, ottengo un errore quando provo a crearlo. –

+0

Hmm ha appena controllato i documenti e 'GetEnumerator' non fa parte di PCL. Cosa stava pensando MS ... – CodesInChaos

risposta

13

Le librerie di classi portatili devono limitarsi alle classi e ai metodi disponibili su tutte le piattaforme di destinazione che promette di supportare. Il più grande trouble-maker qui è WinRT, il CLR ha una proiezione linguistica che associa i tipi WinRT ai tipi gestiti. I metodi System.String non supportati dalla proiezione sono documentati in this answer. GetEnumerator() è uno di questi.

+0

Questo ha senso, non ho selezionato WinRT (in realtà, si chiama .NET per le app in stile Metro nella finestra di selezione del framework) come framework di destinazione. Credo che PCL dovrebbe funzionare come un'intersezione di piattaforme/framework selezionati. –

+3

Bene, il punto di PCL è che potresti * selezionare * WinRT un giorno. –

+0

Sembra che qui abbiamo visioni leggermente diverse, ma per ora accetterò la tua risposta, dal momento che non vedo nessun altro punto che abbia senso. Grazie! –

Problemi correlati