读书人

关于反射解决方案

发布时间: 2012-01-26 19:40:46 作者: rapoo

关于反射

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

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

读书人网 >C#

热点推荐