2 using System.Threading;
3 using System.Runtime.InteropServices;
4 using System.Runtime.Remoting;
5 using System.Runtime.Remoting.Messaging;
6 using System.Runtime.Remoting.Proxies;
7 using System.Runtime.Remoting.Channels;
8 using System.Runtime.Serialization;
10 namespace RemotingTest
12 class MyProxy : RealProxy
14 readonly MarshalByRefObject target;
16 public MyProxy (MarshalByRefObject target) : base (target.GetType())
21 public override IMessage Invoke (IMessage request)
23 IMethodCallMessage call = (IMethodCallMessage)request;
24 Console.WriteLine ("Invoke " + call.MethodName);
26 Console.Write ("ARGS(");
27 for (int i = 0; i < call.ArgCount; i++)
31 Console.Write (call.GetArgName (i) + " " +
34 Console.WriteLine (")");
35 Console.Write ("INARGS(");
36 for (int i = 0; i < call.InArgCount; i++)
40 Console.Write (call.GetInArgName (i) + " " +
43 Console.WriteLine (")");
45 IMethodReturnMessage res = RemotingServices.ExecuteMessage (target, call);
47 Console.Write ("RESARGS(");
48 for (int i = 0; i < res.ArgCount; i++)
52 Console.Write (res.GetArgName (i) + " " +
55 Console.WriteLine (")");
57 Console.Write ("RESOUTARGS(");
58 for (int i = 0; i < res.OutArgCount; i++)
62 Console.Write (res.GetOutArgName (i) + " " +
65 Console.WriteLine (")");
81 Console.WriteLine(sTest);
103 class R1 : MarshalByRefObject
105 public R2 TestMBV() {
112 static int Main(string[] args)
114 Console.WriteLine("test " + AppDomain.CurrentDomain.FriendlyName);
115 AppDomain app2 = AppDomain.CreateDomain("2");
117 if (!RemotingServices.IsTransparentProxy(app2))
120 ObjectHandle o = AppDomain.CurrentDomain.CreateInstance(typeof(R1).Assembly.FullName, typeof(R1).FullName);
121 R1 myobj = (R1) o.Unwrap();
123 // should not be a proxy in our domain..
124 if (RemotingServices.IsTransparentProxy(myobj))
126 Console.WriteLine("CreateInstance return TP for in our current domain");
130 o = app2.CreateInstance(typeof(R1).Assembly.FullName, typeof(R1).FullName);
132 Console.WriteLine("type: " + o.GetType().ToString());
134 myobj = (R1) o.Unwrap();
135 if (!RemotingServices.IsTransparentProxy(myobj))
138 Console.WriteLine("unwrapped type: " + myobj.GetType().ToString());
141 bool bSerExc = false;
146 r2 = myobj.TestMBV();
148 catch (SerializationException)
156 Console.WriteLine("test-ok");