如题:
class AAA:BBB
{}class CCC
{
    CCC(object a) //传入AAA的对象 a
   {
       //这里获得a的父类BBB  
   }
}

解决方案 »

  1.   

     Console.WriteLine(a.GetType().BaseType.ToString());
      

  2.   

    MessageBox.show(a.GetType().BaseType.ToString()); 
      

  3.   

     class BBB
        {
            public void Test()
            {
                MessageBox.Show("Test");
            }
        }
        class AAA : BBB
        {
        }
    class CCC
    {
          CCC(object a) //传入AAA的对象 a
            {
                BBB bbb = Activator.CreateInstance(a.GetType().BaseType) as BBB;
                if (null != bbb)
                {
                    bbb.Test();
                }
            }
    }
      

  4.   

    谢谢
    这个我知道,问题是
    AAA类是另一个XXX类中的一个属性,其实CCC的构造里传的是XXX的对象x,如下
    我将程序断点 走到v时 我看v的 类型显示并是不AAA ,而是 AAA a
    所以v.GetType().BaseType得到的是 System.Reflection.RuntimePropertyInfo
    我要获得BBB 并且把v当成BBB的对象来使用 class AAA:BBB
    {}
    class XXX
    {
        AAA a=new AAA();
    }
    class CCC
    {
        CCC(object x) //传入AAA的对象 a
       {
           foreach (var v in x.GetProperties()
            {
                 //这里获得a的父类BBB          }
        }
    }
      

  5.   

    上面说错 我要获得BBB 并且把v当成AAA的对象来使用 
      

  6.   


    可以跑通的完整代码Form1  相当于CCC类  供参考
      

  7.   

    if(x is AAA) 判断一下 就行