既然A类有一个名为b的B类公共成员,那么通过 A.b就可以访问该B类型实例了也就可以访问其所有成员了

解决方案 »

  1.   

    注意:
    类C中是不知道A的成员的。不要介绍a.b.xx这种方法
      

  2.   

    //直接可以运行!
    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);
      }
    }
    }
      

  3.   

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

  4.   


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

  5.   

    xixigongzhu(夕夕宝贝) 
    同意,方法和属性描述对象都有方法执行的,多看下反射的帮助。
      

  6.   

    前一次回复有些错误,应该是:
    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));
    }