Tôi có hai phương pháp là định nghĩa chồng cho nhauC# intellisense của Visual Studio có thể đưa ra một gợi ý để hiển thị một phương thức nhất định quá tải trước không?
public class Car
{
public int GetPrice(string vinNumber)
{
string make = Database.GetMake(vinNumber); // expensive operation
string model = Database.GetModel(vinNumber); // expensive operation
int year = Database.GetYear(vinNumber); // expensive operation
return this.GetPrice(make, model, year);
}
public int GetPrice(string make, string model, int year)
{
// Calculate value and return
}
}
Trong ví dụ của tôi, getPrice (thực hiện, mô hình, năm) tình trạng quá tải là giá rẻ để thực hiện nhưng phương pháp getPrice (vinNumber) là tốn kém. Vấn đề là phương pháp đắt tiền có các thông số ít nhất và nó xuất hiện đầu tiên trong C# intellisense.
Cả hai phương pháp đều hợp lệ, nhưng tôi muốn khuyến khích mọi người gọi phương thức rẻ tiền. Nhưng mọi người có xu hướng không xem xét tất cả các tình trạng quá tải trong Intellisense trước khi chọn một phương pháp để gọi, và cái đắt tiền đang được gọi quá thường xuyên trong codebase của công ty tôi.
Có cách nào để yêu cầu Visual Studio đưa "ưu tiên intellisense" cho một phương thức cụ thể để nó hiển thị trước không?
Không biết về câu hỏi chung của bạn, nhưng trường hợp cụ thể này có lẽ có thể được giải quyết với việc đặt tên ví dụ GetPrice cho phiên bản giá rẻ và QueryPrice hoặc FetchPrice cho phiên bản đắt tiền (để gợi ý rằng nó sẽ đi nói chuyện với một cơ sở dữ liệu). Chỉ là một ý nghĩ. – itowlson
Và nếu bạn cần phải giữ quá tải tốn kém xung quanh để tương thích, hãy đánh dấu nó bằng EditorBrowsableAttribute (EditorBrowsableState.Never) để ẩn nó khỏi Intellisense. – itowlson
Tôi tự hỏi về sự khôn ngoan của việc có ba cuộc gọi cơ sở dữ liệu ở đó. Chắc chắn bạn có thể viết một truy vấn trả về tất cả dữ liệu bạn cần trong khi chỉ nhấn cơ sở dữ liệu một lần. –