C# 反射,为什么调用不了传入的对象的方法
本帖最后由 u012117131 于 2013-09-15 18:29:34 编辑
public abstract class D{
class A
{
D sub;
public A(D d)
{
sub = d;
}
public void aa(P p)
{
sub.aa(p);
//这里调用的是D的aa方法,,为什么?????????想要的是调用 B.aa
}
}
public void aa()
{}
}
class B:D
{
public void aa(P p)
{}
}
class C
{
P p =new P(); // 数据参数
B b=new B();
D.A a=new D.A(b); // 这里传入的是一个对象
a.aa(p);
}
在java里这里调用的方法是 B.aa,在C#里为什么调用的是D的aa方法?
还有一个很重要的就是传入的对象问题,返回的一直是空值,,,
------解决方案--------------------要么将P定义成结构体(struct)
要么拷贝:
P newp = new P();
newp.xxx = p.xxx;
...
dd.aa(newp);