.NET Framework 4 ve Silverlight 5'i hedefleyen bir PCL projesi oluşturdum (Visual Studio 2010 için bir uzantı kullanıyorum, Visual Studio 2012'den taşınabilir proje şablonu kullanmamalıyım). System.Linq.Enumerable.Reverse<TSource>()
uzantı yöntemini kullanarak bir dizeyi ters çevirmeye çalışıyorum, ancak derleyici System.String
'un IEnumerable<char>
uygulanmadığını düşündüğü için işe yaramıyor.Neden String sınıfı IEnumerable <char> taşınabilir kütüphanede uygulamıyor?
cevap
Taşınabilir Sınıf Kitaplıkları, kendisini destekleyeceği tüm hedef platformlarda bulunan sınıf ve yöntemlerle sınırlamalıdır. Buradaki en büyük sorun WinRT'dir, CLR'nin WinRT türlerini yönetilen türlere eşleyen bir dil projeksiyonu vardır. Projeksiyon tarafından desteklenmeyen System.String yöntemleri, this answer'da belgelenmiştir. GetEnumerator() bunlardan biridir.
Bu mantıklı, WinRT'yi seçmedim (aslında, çerçeve seçim penceresinde Metro stil uygulamaları için .NET olarak adlandırılır) hedef çerçeve olarak seçilmedi. PCL'nin seçilmiş platformların/çerçevelerin kesişimi olarak çalışması gerektiğini düşünüyorum. –
PCL'nin noktası, bir gün WinRT'yi * seçebilmenizdir. –
Burada biraz farklı vizyonumuz olduğu gözüküyor, ama cevabınızı şimdilik kabul edeceğim, çünkü mantıklı olan başka bir nokta görmüyorum. Teşekkürler! –
IEnumerable 'uygulanmadığından emin misiniz, yoksa Intellisense sadece gizliyor mu? –
CodesInChaos
Evet, eminim, oluşturmaya çalıştığımda bir hata alıyorum. –
Hmm, yalnızca dokümanlar kontrol edildi ve 'GetEnumerator' gerçekten PCL'nin bir parçası değil. MS ne düşünüyordu? – CodesInChaos