2012-02-22 29 views
5

tôi thấy C# mã cho nó hereXác minh rằng một đối tượng có một tài sản nhất định

Vì vậy, tôi đã cố gắng

Public Function checkProperty(ByVal objectt As Object, ByVal propertyy As String) As Boolean 
    Dim type As Type = objectt.GetType 
    Return type.GetMethod(propertyy) 
End Function 

Nhưng nó ném một lỗi ở type.GetMethod(propertyy) nói "Value of type 'System.Reflection.MethodInfo' cannot be converted to 'Boolean'."

Phải làm gì?

Trả lời

15

Trước tiên, mã C# kiểm tra sự hiện diện của phương thức , không phải là thuộc tính. Thứ hai, C# mã so sánh trở lại null:

Public Function checkProperty(ByVal objectt As Object, ByVal propertyy As String) As Boolean 
    Dim type As Type = objectt.GetType 
    Return type.GetProperty(propertyy) IsNot Nothing 
End Function 

EDIT Để kiểm tra các lĩnh vực, thay đổi phương thức như sau:

Public Function checkField(ByVal objectt As Object, ByVal fieldName As String) As Boolean 
    Dim type As Type = objectt.GetType 
    Return type.GetField(fieldName) IsNot Nothing 
End Function 
+0

'Return type.GetProperty (propertyy) isnot Nothing' luôn trở về False, ngay cả khi bất động sản chắc chắn không tồn tại. Tôi đã thử 'checkProperty (test," id ")' và 'checkProperty (test," test ")'. Cái cũ phải đúng, nhưng không phải. 'MsgBox (type.Name)' chỉ ra rằng lớp được tìm thấy là kiểu "CTest". 'CTest' có hai thuộc tính:' Public id as integer' và 'Public name là string' – natli

+1

@natli Cả hai' id' và 'name' là * các biến mẫu *, không * thuộc tính *. Xem cập nhật của tôi. – dasblinkenlight

+0

Lỗi lầm sơ cấp về phía tôi, cảm ơn bạn! – natli

4

nó được trả lại MethodInfo thay vào đó và bạn chỉ có thể thay đổi nó như sau:

Public Function checkProperty(ByVal objectt As Object, ByVal propertyy As String) As Boolean 
    Dim type As Type = objectt.GetType 
    Return type.GetMethod(propertyy) IsNot Nothing 
End Function 
0

Bạn đang cố gắng trả về loại.GetMethod (thích hợp yy), trong đó mã ví dụ của bạn trả về kết quả đánh giá nếu phương thức đó là null hay không.

thử Return type.GetMethod(propertyy) isnot nothing

Các vấn đề liên quan