Я создал проект PCL, который нацелен на .NET Framework 4 и Silverlight 5 (я использую расширение для Visual Studio 2010, а не портативный шаблон проекта из Visual Studio 2012, если это имеет значение).
Я пытаюсь изменить строку с помощью метода расширения System.Linq.Enumerable.Reverse<TSource>()
, но это не сработает, потому что компилятор считает, что System.String
не реализует IEnumerable<char>
.
Почему класс String не реализует IEnumerable <char> в переносной библиотеке?
Ответ 1
Библиотеки портативных классов должны ограничиваться классами и методами, доступными на всех целевых платформах, поддерживаемых promises. Крупнейшим создателем проблем здесь является WinRT, у CLR есть языковая проекция, которая отображает типы WinRT для управляемых типов. Методы System.String, не поддерживаемые проекцией, описаны в этом ответе. GetEnumerator() является одним из них.