日期:2014-05-17  浏览次数:20808 次

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方法?
还有一个很重要的就是传入的对象问题,返回的一直是空值,,,
java c# 反射 对象

------解决方案--------------------
要么将P定义成结构体(struct)
要么拷贝:
P newp = new P();
newp.xxx = p.xxx;
...
dd.aa(newp);