Trong khung .net, có giao diện chung IEnumerable<T>
được kế thừa từ số không IEnumerable
, và cả hai đều có phương thức GetEnumerator()
. Sự khác biệt duy nhất giữa hai loại GetEnumerator()
là kiểu trả về. Bây giờ tôi có thiết kế tương tự, nhưng khi tôi biên dịch mã, trình biên dịch cho biết:IEnumerable.GetEnumerator() và IEnumerable <T> .GetEnumerator()
MyInterface<T>.GetItem()
'ẩn thành viên được kế thừa' MyInterface.GetItem()
'. Sử dụng từ khóa mới nếu dự định ẩn.
MyInterface<T>.GetItem()
trả về loại bê tông T, trong khi MyInterface.GetItem()
trả về loại System.Object.
Vì vậy, tôi nghĩ nếu đội ngũ BCL biên dịch khuôn khổ .net, họ sẽ nhận được cảnh báo tương tự.
Tôi nghĩ rằng có cảnh báo trình biên dịch không tốt, bạn nghĩ sao? Và làm thế nào tôi có thể giải quyết vấn đề này? Ý tôi là tôi muốn lấy loại bê tông T khi gọi MyInterface<T>.GetItem()
không chỉ là một thể hiện kiểu System.Object.
Cảm ơn trước! :-)
Bổ sung: tôi nói các giao diện theirselves: IMyInterface thừa hưởng từ IMyInterface, và cả hai đều có GetItem() phương pháp (các IMyInterface.GetItem() trả về gõ T, trong khi IMyInterface. GetItem() trả về kiểu System.Object). Vấn đề là, nếu mã của chúng tôi chỉ có hai giao diện, đó là, không có lớp bê tông có nguồn gốc nào, chúng ta sẽ gặp phải cảnh báo trình biên dịch sau khi biên dịch mã nguồn.
Xin chào, tôi không nói điều này, vui lòng xem "Phụ trang" của tôi trong bài đăng. Cảm ơn :) –
+1 mặc dù bạn không thể chỉ định cấp độ truy cập để triển khai giao diện rõ ràng – erikkallen
@Dylan: Sử dụng từ khóa mới như trình biên dịch đề xuất. Xem các chỉnh sửa của tôi ở trên. –