static int Main()
    {
        R1   myobj = new R1();
        int  res   = 0;
        long lres;

        MyProxy real_proxy = new MyProxy(myobj);

        R1 o = (R1)real_proxy.GetTransparentProxy();

        if (RemotingServices.IsTransparentProxy(null))
        {
            return(1);
        }

        if (!RemotingServices.IsTransparentProxy(o))
        {
            return(2);
        }

        Console.WriteLine("XXXXXXXXXXXX: " + RemotingServices.GetRealProxy(o));

        if (o.GetType() != myobj.GetType())
        {
            return(3);
        }

        MyStruct myres = o.Add(2, out res, 3);

        Console.WriteLine("Result: " + myres.a + " " +
                          myres.b + " " + myres.c + " " + res);

        if (myres.a != 2)
        {
            return(4);
        }

        if (myres.b != 3)
        {
            return(5);
        }

        if (myres.c != 5)
        {
            return(6);
        }

        if (res != 5)
        {
            return(7);
        }

        R1 o2 = new R1();

        lres = test_call(o2);

        lres = test_call(o);

        Console.WriteLine("Result: " + lres);
        if (lres != 5)
        {
            return(8);
        }

        lres = test_call(o);

        o.test_field = 2;

        Console.WriteLine("test_field: " + o.test_field);
        if (o.test_field != 2)
        {
            return(9);
        }

        RemoteDelegate1 d1     = new RemoteDelegate1(o.Add);
        MyStruct        myres2 = d1(2, out res, 3);

        Console.WriteLine("Result: " + myres2.a + " " +
                          myres2.b + " " + myres2.c + " " + res);

        if (myres2.a != 2)
        {
            return(10);
        }

        if (myres2.b != 3)
        {
            return(11);
        }

        if (myres2.c != 5)
        {
            return(12);
        }

        if (res != 5)
        {
            return(13);
        }

        RemoteDelegate2 d2 = new RemoteDelegate2(o.nonvirtual_Add);

        d2(6, 7);

        if (!(real_proxy.GetTransparentProxy() is R2))
        {
            return(14);
        }

        /* Test what happens if the proxy doesn't return the required information */
        EmptyProxy handler = new EmptyProxy(typeof(R3));
        R3         o3      = (R3)handler.GetTransparentProxy();

        if (o3.anObject != null)
        {
            return(15);
        }

        if (o.null_test_field != null)
        {
            return(16);
        }

        return(0);
    }
Exemple #2
0
    static int Main()
    {
        R1   myobj = new R1();
        int  res   = 0;
        long lres;

        MyProxy real_proxy = new MyProxy(myobj);

        R1 o = (R1)real_proxy.GetTransparentProxy();

        if (RemotingServices.IsTransparentProxy(null))
        {
            return(1);
        }

        if (!RemotingServices.IsTransparentProxy(o))
        {
            return(2);
        }

        Console.WriteLine("XXXXXXXXXXXX: " + RemotingServices.GetRealProxy(o));

        if (o.GetType() != myobj.GetType())
        {
            return(3);
        }

        MyStruct myres = o.Add(2, out res, 3);

        Console.WriteLine("Result: " + myres.a + " " +
                          myres.b + " " + myres.c + " " + res);

        if (myres.a != 2)
        {
            return(4);
        }

        if (myres.b != 3)
        {
            return(5);
        }

        if (myres.c != 5)
        {
            return(6);
        }

        if (res != 5)
        {
            return(7);
        }

        R1 o2 = new R1();

        lres = test_call(o2);

        lres = test_call(o);

        Console.WriteLine("Result: " + lres);
        if (lres != 5)
        {
            return(8);
        }

        lres = test_call(o);

        o.test_field = 2;

        int i = o.test_field;          // copy to local variable necessary to avoid CS1690: "Accessing a member on 'member' may cause a runtime exception because it is a field of a marshal-by-reference class"

        Console.WriteLine("test_field: " + i);
        if (i != 2)
        {
            return(9);
        }

        RemoteDelegate1 d1     = new RemoteDelegate1(o.Add);
        MyStruct        myres2 = d1(2, out res, 3);

        Console.WriteLine("Result: " + myres2.a + " " +
                          myres2.b + " " + myres2.c + " " + res);

        if (myres2.a != 2)
        {
            return(10);
        }

        if (myres2.b != 3)
        {
            return(11);
        }

        if (myres2.c != 5)
        {
            return(12);
        }

        if (res != 5)
        {
            return(13);
        }

        RemoteDelegate2 d2 = new RemoteDelegate2(o.nonvirtual_Add);

        d2(6, 7);

        if (!(real_proxy.GetTransparentProxy() is R2))
        {
            return(14);
        }

        /* Test what happens if the proxy doesn't return the required information */
        EmptyProxy handler = new EmptyProxy(typeof(R3));
        R3         o3      = (R3)handler.GetTransparentProxy();

        if (o3.anObject != null)
        {
            return(15);
        }

        if (o.null_test_field != null)
        {
            return(16);
        }

        return(0);
    }