class B {
private int x;
public int X {
get { return x; }
set { x = value; }
}
}
class A {
private B _b;
public B b {
get { return _b; }
set { _b = value; }
}
}
static void Main(string[] args) {
A a = new A();
B b = new B();
b.X = 1000;
a.b = b;
Type t = a.GetType();
PropertyInfo propinfo=t.GetProperty("b");
object o = t.InvokeMember("b", BindingFlags.GetProperty, null, a, null);
if (o != null) {
PropertyInfo propinfo2 = o.GetType().GetProperty("X");
propinfo2.SetValue(o, 1000000, null);
propinfo.SetValue(a, o, null);
}
SetValue(a, "b.X", 1233);
Console.Write(a.b.X);
Console.ReadLine();
}