Tôi đang cố gắng mở rộng lớp Trang để thêm một số chức năng mới (dễ sử dụng cho một số phương thức vì chúng sẽ được gọi trực tiếp trong mã của trang đó) trong ASP.NET và tôi ' m nhận được một lỗi lạ:Vấn đề phương thức mở rộng lạ với thừa kế
phương pháp của tôi được gọi SetQuery
,
nếu tôi gõ SetQuery
trong trang một lớp học, nó không được công nhận (vâng, tôi đã thêm using [Namespace];
),
nếu tôi gõ base.SetQuery
nó được xem trong IntelliSense, nhưng không biên dịch nói rằng không có phương pháp hoặc phương pháp mở rộng nào thực sự được tìm thấy trong Trang,
nếu tôi nhập (this as Page).SetQuery
nó được công nhận và hoạt động.
Đặc biệt trường hợp thứ hai có vẻ là một lỗi đối với tôi, vì IntelliSense nhận ra nó là một phương pháp mở rộng, nhưng không biên dịch.
Có cách nào 'tự nhiên hơn' để nhập SetQuery khi tôi đi, không có phôi, v.v. không?
Tôi hiểu, tôi nghĩ rằng mặc dù tôi đã hoàn toàn sử dụng các phương pháp mở rộng, tôi chưa bao giờ gọi chúng trong chính lớp đó. Nhưng nó vẫn có vẻ là một lỗi với tôi rằng intellisense cho thấy phương pháp, nhưng nó không biên dịch khi tôi viết nó/chọn nó từ intellisense, phàn nàn rằng nó không được tìm thấy. –
@can yes, mà vết thương giống như một lỗi intellisense - đã đồng ý –
FYI: Đó chỉ dành cho C#. Trong VB, bạn có thể sử dụng ngầm định này. –