Tôi có thể tạo Phương thức tiện ích mở rộng cho tất cả các lớp con của System.Object
(mọi thứ) không?VB.NET: không thể sử dụng Phương pháp mở rộng trên ví dụ System.Object
Ví dụ:
<Extension>
Public Function MyExtension(value As Object) As Object
Return value
End Function
Các chức năng trên sẽ không làm việc cho trường hợp đối tượng:
Dim myObj1 As New Object()
Dim myObj2 = myObj1.MyExtension()
Trình biên dịch không chấp nhận nó, là vấn đề trong máy tính của tôi? :)
CẬP NHẬT
Vấn đề dường như chỉ xảy ra trong VB, nơi các thành viên của đối tượng đang nhìn-up bằng cách phản xạ (late-bound).
CẬP NHẬT SAU TRẢ LỜI
FYI, như vb có một lợi thế mà C# thiếu có nghĩa là, các thành viên của Modules nhập khẩu được nhập khẩu với phạm vi toàn cầu, do đó bạn vẫn có thể sử dụng chức năng này mà không cần wrapper của họ:
Dim myObj2 = MyExtension(myObj1)
Bạn có kiểm tra mã này? Dòng thứ ba (someObj) không hoạt động đối với tôi. – Shimmy
Có, điều này phù hợp với tôi. Bạn đã viết phiên bản của phương thức mở rộng IsIn() như thế nào? Tôi đã chỉnh sửa bài đăng của mình để bao gồm việc triển khai để giúp bạn. – mattmc3
Nếu bạn gõ 'someObj' làm' Object' trong mã của bạn, thì điều này chắc chắn sẽ * không * làm việc cho bạn. –