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(); } } }
谢谢 这个我知道,问题是 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 } } }
{
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();
}
}
}
这个我知道,问题是
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 }
}
}
可以跑通的完整代码Form1 相当于CCC类 供参考