2012-02-22 15 views
5

を持って、私はそれのためのC#コードにhereは、オブジェクトが特定のプロパティ

を発見したことを確認してくださいだから私は

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 

を試みたが、それが何をする"Value of type 'System.Reflection.MethodInfo' cannot be converted to 'Boolean'."

を言っtype.GetMethod(propertyy)でエラーがスローされますか?

答えて

15

最初に、C#コードは、メソッドの存在を確認します。第二に、C#コードは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は、フィールドをチェックし、次のようにメソッドを変更するには:

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

を試してみてください'checkProperty(test、" id ")'と 'checkProperty(test、" test ")'を試しました。前者は真実であるべきですが、そうではありません。 'MsgBox(type.Name)'は、見つかったクラスが "CTest"タイプであることを正しく示しています。 'CTest'には' Public id as integer'と 'Public name as string'の2つのプロパティがあります。 – natli

+1

@natli' id'と 'name'はどちらも*プロパティ変数ではなく*インスタンス変数*です。私の更新を参照してください。 – dasblinkenlight

+0

初心者の間違いで、ありがとう! – natli

4

ではなくMETHODINFOを返して、あなたができるのと同じ変更それは次のようになります:

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

あなたはtype.GetMethod(特性yy)を返します。ここで、サンプルコードは、そのメソッドがnullかどうかを評価した結果を返します。

`戻りtype.GetProperty(propertyy)ISNOT Nothing`は常にプロパティが間違いなく存在しない場合でも、Falseを返す。Return type.GetMethod(propertyy) isnot nothing

関連する問題