2 // System.Runtime.Remoting.Messaging.RemotingSurrogate.cs
4 // Author: Patrik Torstensson
6 // (C) Ximian, Inc. http://www.ximian.com
10 using System.Runtime.Remoting;
11 using System.Runtime.Remoting.Proxies;
12 using System.Runtime.Serialization;
14 namespace System.Runtime.Remoting.Messaging
\r
16 internal class RemotingSurrogate : ISerializationSurrogate
\r
18 public virtual void GetObjectData(Object obj, SerializationInfo si, StreamingContext sc)
\r
20 if (null == obj || null == si)
\r
21 throw new ArgumentNullException();
\r
23 if (RemotingServices.IsTransparentProxy (obj) )
\r
25 RealProxy rp = RemotingServices.GetRealProxy (obj);
\r
26 rp.GetObjectData (si, sc);
\r
27 } else RemotingServices.GetObjectData (obj, si, sc);
\r
30 public virtual Object SetObjectData(Object obj, SerializationInfo si, StreamingContext sc, ISurrogateSelector selector)
\r
32 throw new NotSupportedException();
\r
36 internal class ObjRefSurrogate : ISerializationSurrogate
\r
38 public virtual void GetObjectData(Object obj, SerializationInfo si, StreamingContext sc)
\r
40 if (null == obj || null == si)
\r
41 throw new ArgumentNullException();
\r
43 ((ObjRef) obj).GetObjectData (si, sc);
\r
45 // added to support same syntax as MS
\r
46 si.AddValue("fIsMarshalled", 0);
\r
49 public virtual Object SetObjectData(Object obj, SerializationInfo si, StreamingContext sc, ISurrogateSelector selector)
\r
51 // ObjRef is deserialized using the IObjectReference interface
52 throw new NotSupportedException ("Do not use RemotingSurrogateSelector when deserializating");