0

私はこの機能を使用しています:

public static Object GetDate(this Object src, string propName)
{
    return src.GetType().GetProperty(propName).GetValue(src, null);
}

送信された propName = "Name" で、src がたとえば 'Person' オブジェクトであるとします。返される値は「Person」のフィールド「Name」の値であるため、この関数は完璧に機能します。しかし今、他のプロパティ内のプロパティにログオンする必要があります。例: propName = "State.Country.Name"

(State と Country は別のオブジェクトです)次に、propName = "State.Country.Name" と src = Person (Persona はオブジェクト) を渡して関数を使用すると、Country の名前が返されますか?

4

2 に答える 2

0

これはテストされていないことに注意してください。正しい構文は覚えていませんが、試してみてください:

public static Object GetValue(this Object src)
{
    return src.GetType().GetProperty(src.ToString()).GetValue(src, null);
}

基本的に、プロパティのインスタンスを拡張メソッドに渡すだけです。プロパティ名が渡されていないことを確認してください。

Person p = new Person();
var personCountry = p.State.Country.GetValue();

それがうまくいくことを願っています!

于 2013-08-08T15:53:32.240 に答える