2011-01-18 35 views

Trả lời

20

Sử dụng một phương pháp mở rộng nếu có các điều kiện sau là đúng:

  • Bạn cần một phương pháp trên một loại và bạn không sở hữu nguồn.
  • Bạn cần một phương thức trên một loại, bạn làm sở hữu nguồn và loại đó là giao diện.
  • Bạn cần một phương pháp trên một loại, bạn làm sở hữu nguồn, nhưng thêm phương pháp tạo khớp nối không mong muốn. *

Nếu không, bạn nên sử dụng một phương pháp thực vào loại thực tế bản thân.

Tôi không nghĩ sẽ tạo ra một phương pháp mở rộng cho một lớp hoặc cấu trúc mà bạn sở hữu nguồn - tại sao người đọc nhầm lẫn với một phương pháp mở rộng khi một phương pháp thông thường sẽ đủ?

đọc Đề xuất:Framework Design Guidelines: Extension Methods

* Hãy tưởng tượng rằng bạn muốn thêm các phương pháp thuận tiện để một kiểu nhưng không muốn để tạo ra phụ thuộc để lắp ráp hoặc các loại đó không phải là một phần của API. Bạn có thể sử dụng các phương pháp mở rộng để quản lý việc này.

+6

Một trường hợp khác tôi sẽ thêm: Bạn cần một phương pháp trên một loại, bạn sở hữu nguồn nhưng nếu không, phương pháp sẽ tạo ra một khớp nối không mong muốn. – JaredPar

+0

@Jared - Tốt điểm - tôi sẽ thêm nó! –

2

Try this Stackoverflow post for a discussion about extension method best practices.

Theo quan điểm của tôi, tôi sử dụng phương pháp mở rộng khi tôi có rất nhiều chức năng tiện ích cho một loại cụ thể.

Tôi thấy rằng ...

string.ExtensionMethod(); 

trông sạch sẽ hơn ...

StringHelper.ExtensionMethod("string to do something with"); 
+0

Nhưng không phải khi bạn không phải là người đã viết '' 'ExtensionMethod()' '', và dành thời gian cố gắng tìm '' 'ExtensionMethod''' trong tài liệu C# chính thức chỉ để nhận ra rằng bạn đang tìm kiếm sai chỗ. –

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