关于反射
例
public class A
{
public B b=new B();
}
public class B
{
public C c=new C();
}
public class C
{
public string Text= "Hello ";
}
public class Test
{
public static void Main()
{
A a=new A();
//如何通过反射获取a.b.c.Text值,这里只是例子还有很多不知道类型和层次。
}
}
我如何通过反射实现这样效果
可以提供的信息有字符串 "a.b.c.Text "和对象a,如何获取Text的值和设置。
------解决方案--------------------只是取字符串的话,可以偷个懒
A a=new A();
string text = System.Web.UI.DataBinder.Eval(a, "b.c.Text ");
------解决方案--------------------否则的话,自己写一个循环来取了
string propName = "b.c.Text ";
string[] propList = propName.Split( '. ');
A a=new A();
int i=0;
object o = a;
while(o!=null)
{
FieldInfo fi = o.GetType().GetField(propList[i]);
o = fi.GetValue(o);
i++;
}
return o;
------解决方案--------------------mark
------解决方案--------------------public class A
{
public B b=new B();
public string GetC()
{
return b.c.Text;
}
}
因为这个问题很傻.. 完全没有价值, 所以没有必要回答...