2012-05-14 24 views
6

Tôi không bao giờ thích các toán tử ngầm (thích các phương thức mở rộng) bởi vì rất khó để thấy trực quan khi việc truyền/chuyển đổi đó xảy ra trong mã.Làm thế nào để "Tìm tập quán" làm việc với các phương thức vận hành ngầm?

Hãy tưởng tượng nếu bạn có ví dụ như dưới đây:

public static implicit operator Deal(string dealAsXml) 
{ 
    //convert the xml into Deal object 
} 

Trên điều hành ngầm giúp bạn đúc/chuyển đổi thỏa thuận trong định dạng Xml vào Deal Object.

Thông thường khi bạn nhấp chuột phải vào một phương pháp, bạn có thể sử dụng "Tìm tập quán" (hoặc Alt + F7) trên đó, điều này khá hữu ích, có điều gì tương tự cho các toán tử ngầm không?

Tôi nghĩ đó là một lý do khác để sử dụng các phương pháp Tiện ích nếu có thể.

Trả lời

10

Có thể một cái gì đó như Resharper có thể làm điều đó, nhưng tôi không chắc chắn. Khi tôi cần tìm các tập quán, tôi làm theo cách của người nghèo và loại bỏ toán tử ngầm, biên dịch lại và tìm lỗi. Tôi giả sử về mặt lý thuyết thì trình biên dịch có thể bỏ lỡ một trường hợp nếu nó có thể sử dụng toán tử ngầm khác (hoặc chuyển sang trạng thái quá tải kiểu "đối tượng"), nhưng nó có xu hướng hoạt động cho các tập quán của tôi. Tôi chắc chắn có một giải pháp tốt hơn, nhưng nó đã làm việc cho tôi cho đến nay.

EDIT: Chỉ cần suy nghĩ và thử nghiệm nó. Đánh dấu toán tử ngầm của bạn là [Obsolete] sẽ thực sự dẫn đến cảnh báo trình biên dịch ở bất cứ đâu bạn sử dụng! Tôi cho rằng điều này sẽ bắt những trường hợp góc, nơi có quá tải hợp lệ khác mà bạn muốn bỏ lỡ đã loại bỏ các nhà điều hành ngầm hoàn toàn.

+3

Trình chia sẻ lại không tìm thấy tập quán của các toán tử tiềm ẩn. –

+0

cũng làm theo cách của người nghèo. :) đó là khá khó khăn nếu bạn có giải pháp rất lớn –

+0

Đó là quá xấu. Bạn nghĩ rằng sẽ có một cách kể từ khi các toán tử ngầm (tôi tin) được biên dịch tĩnh và sẽ dễ dàng phát hiện được giống như bất kỳ phương thức tĩnh nào. –

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