2009-06-10 35 views
5

Các phương pháp mở rộng có sẵn trên khuôn khổ CE không? Tôi có một phương pháp mở rộng cho chuỗi hoạt động tốt trong một dự án hình thức cửa sổ, tuy nhiên nó sẽ không xây dựng trong ứng dụng PocketPC.C# Phương pháp mở rộng trên PocketPC Windows CE

Tôi nhận thấy đây sẽ là một điều dễ dàng để tìm hiểu, tuy nhiên tôi không thể tìm thấy bất kỳ thông tin nào về phương pháp mở rộng trên PocketPC.

Chỉnh sửa: Rất tiếc đây là lỗi của tôi. Tôi đã viết phương pháp mở rộng trong Visual Studio 2008, tuy nhiên dự án PocketPC đã được biên soạn trong Visual Studio 2005, mà tôi đã không nhận ra. Vâng, đó là một giờ trong cuộc đời của tôi, tôi không bao giờ quay trở lại. Cảm ơn tất cả mọi người cho câu trả lời anyway.

+0

lỗi gì (s) bạn đang nhìn thấy? – ChrisF

Trả lời

7

Muốn xóa một chút nhầm lẫn ở đây. Các phương thức mở rộng là một tính năng của trình biên dịch, không nhất thiết là một phiên bản cụ thể của khung công tác. Do đó, các phương thức mở rộng có thể được sử dụng trên bất kỳ nền tảng nào có phiên bản trình biên dịch hỗ trợ cả hai phương thức mở rộng và nền tảng đó.

Trình biên dịch C# 3.0 có thể giảm mục tiêu xuống 2.0 khung công tác và hỗ trợ các phương pháp mở rộng để chúng có sẵn trên khung nhỏ gọn.

Điều duy nhất khung thực sự cung cấp cho các phương pháp mở rộng là ExtensionAttribute. Tuy nhiên, điều này không có bất kỳ chức năng nào liên kết với nó và có thể được xác định bởi ứng dụng của bạn nếu nó không có sẵn. Đây là một bài viết trên blog, tôi đã viết về đề tài này

2

Chúng được hỗ trợ trong Khung nhỏ gọn theo this blog post. Tuy nhiên, tôi hy vọng họ yêu cầu Compact Framework phiên bản 3.5. Phiên bản bạn đang sử dụng?

2

Bạn đang nhắm mục tiêu phiên bản khung nào? Nếu bạn đang nhắm mục tiêu CF 2.0 từ VS2008, bạn có thể cần phải khai báo ExtensionAttribute ...

namespace System.Runtime.CompilerServices 
{ 
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class 
     | AttributeTargets.Method)] 
    public sealed class ExtensionAttribute : Attribute {} 
} 
+0

Liên kết tốt với điều đó ở đây: http://blog.markarteaga.com/UsingExtensionMethodsInNETCF20.aspx –

+0

Vâng, có thể - nhưng nó đẹp hơn bao gồm AttributeUsage quá ;-p –

+0

Ya, đủ sự thật. –

0

Bạn có thể sử dụng nó với .NET Compact Framework 2.0 và VS2008 qua một hack nhỏ theo this blog.

3

Có, chúng được hỗ trợ trong CF 3.5. Nếu bạn đang sử dụng CF 2.0, bạn sẽ cần phải xác định ExtensionAttribute và sau đó chúng sẽ hoạt động.

// this is a definition of a 3.5 class for use in 2.0. If we upgrade to target CF3.5, we will need to remove it... 
    namespace System.Runtime.CompilerServices 
    { 
     public class ExtensionAttribute : Attribute { } 
    } 

namespace TestExtension 
{ 
    public static class Extensions 
    { 
     public static int TestMethod(this string value) 
     { 
      return value.ToString(); 
     } 
    } 
} 
Các vấn đề liên quan