私はプロパティの名前を持っており、クラス内でその値を見つける必要がありますが、この値に達する最も速い方法は何ですか?プロパティ名とその値が必要
答えて
私はあなたが実行時にプロパティの名前を持っていると仮定しています。コーディングされていないが...
はのは、あなたのクラスがするtheClassと呼ばれると仮定しましょう、それはThePropertyというプロパティがあります。実行時に
object GetThePropertyValue(object instance)
{
Type type = instance.GetType();
PropertyInfo propertyInfo = type.GetProperty("TheProperty");
return propertyInfo.GetValue(instance, null);
}
プロパティの名前を使用してください。それがnullableプロパティ(int?プロパティなど)の場合は、property.Valueを使用します。
質問が十分ではないため、投票結果は公平ではありませんでした。 – fbinder
あなたがプロパティの値を取得するためにリフレクションを使用することができます。
つの注意点:
難読化:難読化ツールは は、この機能が解除されますプロパティの名前を変更することがあります。
リファクタリング: のリファクタリングを使用すると、コードが難しくなります。 リファクタリング。プロパティの という名前を変更する場合は、 反射を使用して名前に基づいてプロパティ値 を取得するインスタンスを で検索する必要があります。
あなたはあなたが文字列としてプロパティの名前を持っていることを意味すると思います。この場合、プロパティ値を取得するために少しのリフレクションを使用する必要があります。下の例では、プロパティを含むオブジェクトはobj
と呼ばれています。
var prop = obj.GetType().GetProperty("PropertyName");
var propValue = prop.GetValue(obj, null);
希望します。
開発にではなくランタイムに興味がある場合は、Jon SkeetのMaking reflection fly and exploring delegatesブログ記事をご覧ください。
- 1. その値からプロパティ名を取得
- 2. プロパティ名とその値を取得するには?
- 3. XMLからの要素名とプロパティ値の抽出
- 4. クラスに読み書き可能なGUIDとDateTimeプロパティの値が必要です
- 5. ソートする必要がある名前とその番号のリスト.TXTファイル
- 6. のZend_Filter_Inputと必要な値
- 7. C#のプロパティ - サブプロパティが必要です
- 8. def __get__が必要な理由:戻り値の型。型名?
- 9. 注文モデルクラスのCustomerIdのプロパティと共にCustomerのプロパティが必要ですか?
- 10. プロパティのコンテンツは、あなたがそれをラップする必要があります...もっと一度
- 11. Maven:Mavenプロパティの値の概要
- 12. Emacsはそれが必要として1台の
- 13. Javaのコールバックと匿名クラスの助けが必要
- 14. アレイ内の値を更新する必要がありますが、元の値をそのまま更新する必要があります
- 15. jsでoauthの値が必要です
- 16. カスタムジェネリッククラス、メソッド名が必要です
- 17. Auth0「テナントに名前が必要です」
- 18. DoWorkEventHandler "メソッド名が必要です"
- 19. デジタル署名が必要なファイル
- 20. SQLオブジェクト名にRegex式が必要
- 21. c#マルチスレッドメソッド名が必要です
- 22. 件名照会ヘルプが必要です
- 23. 複数のホスト名にURLごとにユニークなiframeが必要
- 24. 必要以上のプロパティの処理
- 25. ivarとプロパティを同じ名前で宣言する必要があるのはなぜですか?
- 26. スレッド名 - いつそれらを知る必要がありますか?
- 27. クラスと同じ名前のメソッドが戻り値の型を必要としないのはなぜですか?
- 28. コントローラ名はcodeigniterのファイル名と一致する必要がありますか?
- 29. SimpleXMLのヘルプとHREFノード値の取得が必要
- 30. グローバル変数とそのプロパティの値を再帰的に検索
あなたは私にそれを打つ。ただし、関数は特定の型のパラメータを持つ必要はありません。 'オブジェクトインスタンス'はうまくいくと私は信じている。 – Noldorin
@ Noldorin:あなたは入力パラメータについて正しいです。コードを更新しました:o) –
パーフェクト、プロパティ名をパラメータに追加しました。プロパティ名を返すことができます – Coppermill