2011-07-19 36 views
5

Với phương pháp mở rộng, chúng tôi có thể dễ dàng thêm phương thức vào bất kỳ loại nào. Rõ ràng điều này mở ra khả năng trong một phiên bản tương lai của .net, phương thức mở rộng có thể không còn được gọi nữa (ví dụ, kiểu hiện nay bao gồm một phương thức có chữ ký giống với phương thức mở rộng).Phương pháp mở rộng tương thích về phía trước

Đây có phải là mối quan tâm không?

Nếu vậy, làm cách nào để giải quyết vấn đề này và thiết kế các phương pháp tiện ích mở rộng của tôi để giảm thiểu thay đổi mã nên điều này có xảy ra không?

+0

Nếu bạn quan tâm về điều đó, một giải pháp sẽ không sử dụng các phương pháp mở rộng. ';)' Bạn có thể kế thừa từ lớp bạn đang mở rộng và thêm phương thức theo cách đó. Bạn sẽ nhận được cảnh báo rằng bạn đang ẩn phương thức mới được thêm vào sau. Hoặc bạn chỉ có thể loại bỏ công cụ sửa đổi tham số 'this' này khỏi phương thức tĩnh. –

Trả lời

6

Nếu khuôn khổ được thay đổi rất nhiều trong tương lai, sẽ luôn có những vấn đề tương thích. Nếu một phương pháp khung mới được thêm cùng tên với phương pháp mở rộng của bạn, có khả năng chúng có cùng chức năng hoặc ít nhất là rất giống nhau và tái cấu trúc lại là do.

Tôi nghĩ rằng sức mạnh của các phương pháp mở rộng quá lớn để bỏ qua chỉ vì rủi ro này.

+0

Tôi đồng ý. Làm cho các phương pháp mở rộng của bạn rõ ràng, rõ ràng và đơn giản nhất có thể. – hatchet

0

Sử dụng tên phương pháp mơ hồ sẽ không bao giờ được sử dụng trong khuôn khổ.

chỉnh sửa - có lẽ che khuất không phải là từ thích hợp nhất, xin vui lòng thay thế với có ý nghĩa nhưng ít phổ biến hơn verbage

Cố gắng tránh những xung đột chữ ký thực sự là chiến lược duy nhất để tránh những rắc rối của làm lại mã (giả sử rằng chức năng của phương thức mở rộng cần phải được bảo toàn và không đơn giản là chuyển đổi sang định nghĩa của khung công tác của phương thức).

+0

Tôi không phải là người hâm mộ điều đó. Tên phải rõ ràng. –

+0

Đồng ý, họ nên có ý nghĩa, nhưng tôi không nghĩ rằng có ý nghĩa và tối nghĩa cần phải loại trừ lẫn nhau. Kéo ra từ điển đồng nghĩa và sử dụng các động từ ít phổ biến hơn nhưng rõ ràng hơn. – roken

+1

Nếu bạn quá lo lắng, bạn luôn có thể thêm tiền tố, như ext_Redefine thay vì Xác định lại. – Blam

0

Tôi e rằng điều duy nhất bạn có thể làm là cung cấp đủ tên duy nhất cho các phương pháp mở rộng của bạn để bạn chắc chắn 100% bạn sẽ không bao giờ có xung đột.

Không nói về việc thêm tên của con mèo của bạn để tên của phương pháp, chỉ cần cố gắng để trở nên sáng tạo hơn :)

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