日期:2014-05-18  浏览次数:20901 次

关于反射

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;
}
}

因为这个问题很傻.. 完全没有价值, 所以没有必要回答...