2010-02-17 25 views
11

Tôi đã tự hỏi nếu có một cách để tạo ra các phương pháp mở rộng bằng cách sử dụng Visual Studio 2005 và khung 2.0?Có thể tạo các Phương thức Mở rộng với Khung 2.0 không?

public static class StringExtensions 
{ 
    public static void SomeExtension(this String targetString) 
    { 

    } 
} 

Nếu không có cách nào để thực hiện việc này, điều tương đương sẽ là gì? Chỉ cần tạo các phương thức tĩnh trong một số loại lớp thư viện?

+0

Bạn đang sử dụng Visual Studio 2008 hoặc 2005? –

+0

Tôi đang sử dụng VS2005 – DevDemon

+2

thì bạn đã hết may mắn. –

Trả lời

18

Bạn có thể tạo các phương thức mở rộng bằng cách sử dụng .Net framework 2.0, nếu bạn sử dụng trình biên dịch C# 3.0 và Visual Studio 2008 trở lên.

Việc nắm bắt được rằng bạn phải thêm mã này vào dự án của bạn:

namespace System.Runtime.CompilerServices 
{ 
    public class ExtensionAttribute : Attribute { } 
} 

Về cơ bản bạn cần phải khai báo ExtensionAttribute trong Core.dll (Net 3.5 +), trong dự án của bạn.

+0

Ok cảm ơn, vì vậy nó có thể với VS2008 và 2.0, nhưng không VS2005 và 2.0, cảm ơn! – DevDemon

3

Không, điều này là không thể trong .Net 2.0 (không sử dụng trình biên dịch C# 3.0). Bạn chỉ có thể tạo các phương thức tĩnh thực hiện chính xác cùng một điều, tuy nhiên:

public static class StringExtensions 
{ 
    public static void SomeExtension(String targetString) 
    { 
     // Do things 
    } 
} 

// Example use: 
StringExtensions.SomeExtension(targetString); 

Trong phương pháp mở rộng thực tế chỉ là một cách viết tắt ở trên.

+0

nó ** là ** có thể ... –

+0

@Andreas Nếu bạn sử dụng trình biên dịch C# 3.0 thì sao? Đó là * chắc chắn * gian lận. – Justin

+0

nhưng có thể ... vì vậy câu trả lời của bạn là sai. nó sẽ là đúng nếu nó nói 'nó là không thể sử dụng .net 2.0 compiler' –

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