Tôi đang gặp một chút khó khăn khi xác định thời điểm triển khai phương pháp làm phương pháp mở rộng và khi nào triển khai phương pháp như một phương pháp độc lập. Một số phương pháp hay nhất mà mọi người tuân theo trong việc xác định điều này là gì?Phương pháp mở rộng so với phương pháp thông thường - Ý tưởng thực hành tốt nhất
Trả lời
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.
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");
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ỗ. –
- 1. Phương pháp mở rộng so với Helper Lớp
- 2. Phương pháp lồng nhau, thực hành tốt nhất
- 3. Phương pháp mở rộng so với thừa kế
- 4. Phương pháp mở rộng ảo?
- 5. Phương pháp mở rộng hiệu suất so với Phương pháp thể hiện
- 6. Mocking Phương pháp mở rộng với Moq
- 7. C#: điều hành ngầm và mở rộng các phương pháp
- 8. FormatProvider so với phương pháp mở rộng so với lớp mới
- 9. Phương pháp thực hành hiển thị thông điệp flash tốt nhất
- 10. Phương pháp mở rộng chuỗi trong C#
- 11. So sánh: phương pháp giao diện so với phương pháp ảo so với phương pháp trừu tượng
- 12. C# sử dụng thông số và phương pháp mở rộng
- 13. Các phương pháp hay nhất: C# Phương pháp mở rộng không gian tên và khuyến khích các phương pháp mở rộng
- 14. Phương pháp mở rộng TryParse chung
- 15. Phương pháp lớp Ruby so với phương pháp trong Eigenclasses
- 16. Phương pháp thực hành tốt để tải JavaScript qua ajax
- 17. Phương pháp mở rộng cho Enumerable.Intersperse?
- 18. Tổ chức các phương pháp mở rộng
- 19. PHP - mở rộng phương pháp như mở rộng một lớp
- 20. Phương pháp mở rộng liệt kê
- 21. Thay thế một phương pháp thông thường với một phương pháp vô danh trong C#/LINQ
- 22. Làm thế nào để buộc sử dụng phương pháp mở rộng thay vì phương pháp dụ với thông số?
- 23. Cách tạo phương pháp mở rộng chung?
- 24. Phương pháp mở rộng trả về biểu thức lambda thông qua so sánh
- 25. Độ phân giải phương pháp mở rộng
- 26. Phương pháp lõi jQuery so với phương pháp tiện ích
- 27. Phương pháp mở rộng cho nullable enum
- 28. Mang lại phương pháp DbContext.Detach() với một phương pháp mở rộng (EF5)
- 29. Thực hành tốt nhất, ghi đè __construct() so với việc cung cấp phương thức init()
- 30. Phương pháp mở rộng bằng Python
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
@Jared - Tốt điểm - tôi sẽ thêm nó! –