2012-07-19 24 views
11

Tôi đã tạo một dự án PCL nhắm mục tiêu .NET Framework 4 và Silverlight 5 (tôi sử dụng phần mở rộng cho Visual Studio 2010, không phải mẫu dự án di động từ Visual Studio 2012, nếu có vấn đề). Tôi đang cố đảo ngược một chuỗi bằng cách sử dụng phương pháp mở rộng System.Linq.Enumerable.Reverse<TSource>(), nhưng nó không hoạt động vì trình biên dịch cho rằng System.String không triển khai IEnumerable<char>.Tại sao lớp String không thể thực hiện IEnumerable <char> trong thư viện di động?

+0

Bạn có chắc chắn nó không thực hiện 'IEnumerable ', hay là Intellisense chỉ ẩn nó? – CodesInChaos

+0

Có, tôi chắc chắn, tôi gặp lỗi khi cố gắng xây dựng nó. –

+0

Hmm chỉ cần kiểm tra các tài liệu, và 'GetEnumerator' thực sự không phải là một phần của PCL. Điều gì đã được MS suy nghĩ ... – CodesInChaos

Trả lời

13

Thư viện lớp học di động phải tự giới hạn các lớp và phương thức có sẵn trên tất cả các nền tảng đích mà nó hứa hẹn hỗ trợ. Vấn đề gây rắc rối lớn nhất ở đây là WinRT, CLR có một phép chiếu ngôn ngữ ánh xạ các kiểu WinRT tới các kiểu được quản lý. Các phương thức System.String không được hỗ trợ bởi phép chiếu được ghi lại trong this answer. GetEnumerator() là một trong số chúng.

+0

Điều đó có ý nghĩa, bởi tôi đã không chọn WinRT (trên thực tế, nó được gọi là .NET cho các ứng dụng phong cách Metro trong cửa sổ chọn khung) làm khung mục tiêu. Tôi đoán PCL nên hoạt động như một giao điểm của các nền tảng/khung được chọn. –

+3

Vâng, quan điểm của PCL là bạn * có thể * chọn WinRT một ngày nào đó. –

+0

Dường như chúng ta có những tầm nhìn hơi khác nhau ở đây, nhưng bây giờ tôi sẽ chấp nhận câu trả lời của bạn, vì tôi không thấy bất kỳ điểm nào khác có ý nghĩa. Cảm ơn! –

Các vấn đề liên quan