2011-06-09 3 views
0

簡単にするため、プロパティの値を常に文字列として返す必要があるとしましょう。実行時にpropertynameを知らないと、プロパティの値を返す方法はありますか?

public string GetTheValueOfTheProperty(PropertyInfo propertyInfo,Object myObject){ 
     string propname = propertyInfo.Name; 
     if (propName == "IsSelected"){ 
      return myObject.IsSelected.ToString(); 
     } 
    //... 
} 

これは機能しますが、プロパティの名前がわからないと機能しません。どのように私はそのシナリオでそれを行うだろうか?

+0

私は実際に構文「(myObject.IsSelected.ToStringを返すを使用せずに、iteratevely例えば、すべてのプロパティのすべての値を返す必要があります) ; – HCP

+0

'Type'オブジェクトに' GetProperties'を使って、すべてのプロパティのリストを取得することができます。具体的な方法は、(あなたの質問で)上記のメソッドを呼び出す方法に依存します –

答えて

5

http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.getvalue.aspx

あなたはpropertyInfo.GetValue(myObject, null);を呼び出すことができます。

あなたはToString()stringに変換することができますが、最初nullの値をチェックする必要があります - そうでなければ、NullReferenceExceptionを取得します。

+0

+1 - クール、私はしませんでしたこのメソッドを知っている! –

0

PropertyInfoオブジェクトを使用すると、オブジェクトのプロパティを呼び出すことができます:

object value = propertyInfo.GetGetMethod().Invoke(myObject, new object[] { }); 
+0

速い警告;それはプロパティが 'string'であると仮定し、それが違うタイプの例外をスローする –

+0

あなたは正しいです、私は質問を誤読しました - 私は小道具と思った慣習は文字列であり、文字列として返されることはありません。 –

関連する問題