目前我试图从嵌套类中获取属性的值。不幸的是,我获得的参数为object
。我知道内部结构,但我无法解开,如何到达房产。
为了便于测试,我准备了一些代码:
namespace ns{
public class OuterClass{
public InnerClass ic = new InnerClass();
}
public class InnerClass {
private string test="hello";
public string Test { get { return test; } }
}
}
直接调用这个很容易:
var oc = new ns.OuterClass();
string test = oc.ic.Test;
但是当我尝试通过反射得到价值时,我遇到了System.Reflection.TargetException
:
object o = new ns.OuterClass();
var ic_field=o.GetType().GetField("ic");
var test_prop = ic_field.FieldType.GetProperty("Test");
string test2 = test_prop.GetValue(???).ToString();
我必须使用什么作为GetValue()
中的对象?
答案 0 :(得分:3)
您需要从ic
FieldInfo
的值
object ic = ic_field.GetValue(o);
然后将其传递给test_prop.GetValue
:
string test2 = (string)test_prop.GetValue(ic, null);