Why doesn't String class implement IEnumerable<char> in portable library?

.net, portable-class-library

Solution

The Portable Class Libraries must restrict itself to the classes and methods that are available on all the target platforms it promises to support. The biggest trouble-maker here is WinRT, the CLR has a language projection that maps WinRT types to managed types. The System.String methods not supported by the projection are documented in this answer. GetEnumerator() is one of them.

Problem

I've created a PCL project that targets .NET Framework 4 and Silverlight 5 (I use an extension for Visual Studio 2010, not portable project template from Visual Studio 2012, if that matters). I am trying to reverse a string using `System.Linq.Enumerable.Reverse<TSource>()` extension method, but it doesn't work because compiler thinks that `System.String` doesn't implement `IEnumerable<char>`.

Original source

Related problems