2012-02-22 14 views
5

znalazłem kod C# za to hereSprawdź, czy obiekt ma pewną właściwość

Więc próbowałem

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 

Ale to wyrzuca błąd przy type.GetMethod(propertyy) mówiąc "Value of type 'System.Reflection.MethodInfo' cannot be converted to 'Boolean'."

Co robić?

Odpowiedz

15

Po pierwsze, kod C# sprawdza obecność metody , a nie właściwości. Po drugie, kod C# porównuje powrót do 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 Aby sprawdzić pól, zmienić metodę następująco:

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

'Powrót type.GetProperty (propertyy) isnot Nothing' zawsze zwraca False, nawet jeżeli nieruchomość na pewno istnieje. Próbowałem 'checkProperty (test," id ")' i 'checkProperty (test," test ")'. To pierwsze powinno być prawdziwe, ale nie jest. 'MsgBox (type.Name)' poprawnie wskazuje, że znaleziona klasa jest typu "CTest". 'CTest' ma dwie właściwości:' Publiczny identyfikator jako liczba całkowita' oraz 'Publiczna nazwa jako ciąg' – natli

+1

@natli Zarówno" id "i" nazwa "to * zmienne instancji *, a nie * właściwości *. Zobacz moją aktualizację. – dasblinkenlight

+0

Początkowy błąd z mojej strony, dziękuję! – natli

4

to wraca MethodInfo zamiast a może po prostu zmiana to następująco:

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

Próbujesz zwrócić type.GetMethod (propert yy), gdzie przykładowy kod zwraca wynik oceny, czy ta metoda ma wartość null, czy nie.

spróbować Return type.GetMethod(propertyy) isnot nothing

Powiązane problemy