页面aspx中有一个实例对象A
其中A.b = false;我在ascx中反射了A, 命名为B
然后调用B中的方法设置B.b = true;后面又有对象调用了A, 发现A.b = false, 没有更改过...B和A实际上是不同的对象吗?

解决方案 »

  1.   

    不用两年吧
    ClassA classA= new ClassA();
    楼主啊,你到底是反射ClassA还是classA
      

  2.   

    我在ascx中反射了A, 命名为B这句描述的确很诡异。
      

  3.   

    对WebService的操作还是用返回值吧。这个WebService我的理解就是个有输入有输出的函数,按照你的想法,你应该是想把对象的地址传过去,但是服务器上的WebService应该操作不了你本地内存中的地址吧。只能取得WebService的返回值。
      

  4.   

    我反射的是一个GetA方法然后通过GetA这个方法来获取A这个对象的
      

  5.   


    //===================================这是在aspx中
    ClassA A = new ClassA();
    public ClassA GetType()
    {
        return A;
    }
    //===================================这是在ascx中
    MethodInfo GetA = Page.GetType().GetMethod("GetA");
    B = (A)GetA.Invoke(Page, null);//ascx是放在aspx中的, 
      

  6.   

    不好意思, 楼上的贴错了//===================================这是在aspx中
    ClassA A = new ClassA();
    public ClassA GetA()
    {
        return A;
    }
    //===================================这是在ascx中
    MethodInfo GetA = Page.GetType().GetMethod("GetA");
    ClassA B = (A)GetA.Invoke(Page, null);//ascx是放在aspx中的, 
      

  7.   

    从代码上看,这个B应该是指向A的实例。
    你可以Debug一下:
    bool isSameObj = Object.ReferenceEquals(A, B);关键是在你之前的判断中间是否发生Page的PostBack才进行的修改?注意:Page每次Postback都是一个新的对象,其中的类成员也都重新New过。
      

  8.   

    ClassA B = (A)GetA.Invoke(Page, null);应该是:ClassA B = (ClassA)GetA.Invoke(Page, null);