Đã có những trường hợp tôi muốn ghi đè phương thức trong một lớp học bằng một phương thức mở rộng. Có cách nào để làm điều đó trong C#?Có cách nào trong C# để ghi đè lên một phương thức lớp với một phương pháp mở rộng?
Ví dụ:
public static class StringExtension
{
public static int GetHashCode(this string inStr)
{
return MyHash(inStr);
}
}
Một trường hợp mà tôi đã muốn làm điều này là để có thể lưu trữ một hash của một chuỗi thành một cơ sở dữ liệu và có cùng một giá trị được sử dụng bởi tất cả các lớp học sử dụng hàm băm của chuỗi ký tự (ví dụ: Từ điển, v.v.) Vì thuật toán băm .Net được tích hợp không được đảm bảo tương thích từ một phiên bản của Khung tiếp theo, tôi muốn thay thế bằng phiên bản của riêng mình.
Có trường hợp khác tôi đã chạy vào nơi tôi muốn ghi đè lên một phương pháp lớp với một phương pháp mở rộng cũng vì vậy nó không chỉ cụ thể cho lớp chuỗi hoặc phương pháp GetHashCode.
Tôi biết tôi có thể làm điều này với phân lớp ra khỏi một lớp học hiện có nhưng sẽ thuận tiện để có thể làm điều đó với phần mở rộng trong nhiều trường hợp.
Vì từ điển là cấu trúc dữ liệu trong bộ nhớ , sự khác biệt nào khi thuật toán băm thay đổi từ phiên bản của khung công tác sang khung tiếp theo? Nếu phiên bản khung thay đổi, thì rõ ràng là ứng dụng đã được khởi động lại và từ điển đã được xây dựng lại. –