2009-04-28 12 views

答えて

14

私はあなたが実行時にプロパティの名前を持っていると仮定しています。コーディングされていないが...

はのは、あなたのクラスがするtheClassと呼ばれると仮定しましょう、それはThePropertyというプロパティがあります。実行時に

object GetThePropertyValue(object instance) 
{ 
    Type type = instance.GetType(); 
    PropertyInfo propertyInfo = type.GetProperty("TheProperty"); 
    return propertyInfo.GetValue(instance, null); 
} 
+3

あなたは私にそれを打つ。ただし、関数は特定の型のパラメータを持つ必要はありません。 'オブジェクトインスタンス'はうまくいくと私は信じている。 – Noldorin

+1

@ Noldorin:あなたは入力パラメータについて正しいです。コードを更新しました:o) –

+0

パーフェクト、プロパティ名をパラメータに追加しました。プロパティ名を返すことができます – Coppermill

0

プロパティの名前を使用してください。それがnullableプロパティ(int?プロパティなど)の場合は、property.Valueを使用します。

+0

質問が十分ではないため、投票結果は公平ではありませんでした。 – fbinder

0

あなたがプロパティの値を取得するためにリフレクションを使用することができます。

つの注意点:

  • 難読化:難読化ツールは は、この機能が解除されますプロパティの名前を変更することがあります。

  • リファクタリング: のリファクタリングを使用すると、コードが難しくなります。 リファクタリング。プロパティの という名前を変更する場合は、 反射を使用して名前に基づいてプロパティ値 を取得するインスタンスを で検索する必要があります。

2

あなたはあなたが文字列としてプロパティの名前を持っていることを意味すると思います。この場合、プロパティ値を取得するために少しのリフレクションを使用する必要があります。下の例では、プロパティを含むオブジェクトはobjと呼ばれています。

var prop = obj.GetType().GetProperty("PropertyName"); 
var propValue = prop.GetValue(obj, null); 

希望します。

関連する問題