//直接可以运行! using System; using System.Reflection;namespace HUST { public class B { public int count=1; public int GetTheValue() { return count; } } public class A { public B b=new B(); } class Class1 { static void Main(string[] args) { A a=new A(); //这句可以取出实例a的字段b的名称. FieldInfo f = a.GetType().GetField("b"); Console.WriteLine(f); //可以取出实例a的字段b的成员变量count的值。 Console.WriteLine(a.b.count); } } }
FieldInfo f = A.GetType().GetField("B"); Object bobj = f.GetValue(this); Type bType = f.FieldType; FieldInfo[] bfields = bType.GetFields(); for (int i = 0; i < bfields.Length; i++) { Console.WriteLine(bfields[i].GetValue(bobj)); }
class B { public int count; public int GetTheValue() { return count; } }class A { public B b = new B(); } class C { public A a=new A(); public void GetInfo() { FieldInfo f = a.GetType().GetField("b"); Object bobj = f.GetValue(a); Type bType = f.FieldType; FieldInfo[] bfields = bType.GetFields(); for (int i = 0; i < bfields.Length; i++) { Console.WriteLine(bfields[i].GetValue(bobj)); } } }
xixigongzhu(夕夕宝贝) 同意,方法和属性描述对象都有方法执行的,多看下反射的帮助。
前一次回复有些错误,应该是: FieldInfo f = a.GetType().GetField("b"); Object bobj = f.GetValue(a); Type bType = f.FieldType; FieldInfo[] bfields = bType.GetFields(); for (int i = 0; i < bfields.Length; i++) { Console.WriteLine(bfields[i].GetValue(bobj)); }
类C中是不知道A的成员的。不要介绍a.b.xx这种方法
using System;
using System.Reflection;namespace HUST
{
public class B
{
public int count=1;
public int GetTheValue()
{
return count;
}
}
public class A
{ public B b=new B();
}
class Class1
{ static void Main(string[] args)
{
A a=new A();
//这句可以取出实例a的字段b的名称. FieldInfo f = a.GetType().GetField("b");
Console.WriteLine(f);
//可以取出实例a的字段b的成员变量count的值。
Console.WriteLine(a.b.count);
}
}
}
Object bobj = f.GetValue(this);
Type bType = f.FieldType;
FieldInfo[] bfields = bType.GetFields();
for (int i = 0; i < bfields.Length; i++) {
Console.WriteLine(bfields[i].GetValue(bobj));
}
class B
{
public int count;
public int GetTheValue()
{
return count;
}
}class A
{
public B b = new B();
}
class C
{
public A a=new A();
public void GetInfo()
{
FieldInfo f = a.GetType().GetField("b");
Object bobj = f.GetValue(a);
Type bType = f.FieldType;
FieldInfo[] bfields = bType.GetFields();
for (int i = 0; i < bfields.Length; i++) {
Console.WriteLine(bfields[i].GetValue(bobj));
} }
}
同意,方法和属性描述对象都有方法执行的,多看下反射的帮助。
FieldInfo f = a.GetType().GetField("b");
Object bobj = f.GetValue(a);
Type bType = f.FieldType;
FieldInfo[] bfields = bType.GetFields();
for (int i = 0; i < bfields.Length; i++) {
Console.WriteLine(bfields[i].GetValue(bobj));
}