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); }
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); }