StreamingContext context = new StreamingContext (StreamingContextStates.Other);\r
SurrogateSelector sel = new SurrogateSelector();\r
sel.AddSurrogate (typeof (Point), context, new PointSurrogate());\r
+ sel.AddSurrogate (typeof (FalseISerializable), context, new FalseISerializableSurrogate());\r
\r
List list = CreateTestData();\r
BinderTester_A bta = CreateBinderTestData();\r
StreamingContext context = new StreamingContext (StreamingContextStates.Other);\r
SurrogateSelector sel = new SurrogateSelector();\r
sel.AddSurrogate (typeof (Point), context, new PointSurrogate());\r
+ sel.AddSurrogate (typeof (FalseISerializable), context, new FalseISerializableSurrogate());\r
\r
BinaryFormatter f = new BinaryFormatter (sel, context);\r
\r
}\r
}\r
\r
+ [Serializable]\r
+ public class FalseISerializable : ISerializable\r
+ {\r
+ public int field;\r
+ \r
+ public FalseISerializable (int n)\r
+ {\r
+ field = n;\r
+ }\r
+ \r
+ public void GetObjectData(SerializationInfo info, StreamingContext context)\r
+ {\r
+ throw new InvalidOperationException ("Serialize:We should not pass here.");\r
+ }\r
+ \r
+ public FalseISerializable (SerializationInfo info, StreamingContext context)\r
+ {\r
+ throw new InvalidOperationException ("Deserialize:We should not pass here.");\r
+ }\r
+ }\r
+ \r
+ public class FalseISerializableSurrogate : ISerializationSurrogate\r
+ {\r
+ public void GetObjectData (object obj, SerializationInfo info, StreamingContext context)\r
+ {\r
+ info.AddValue("field", Convert.ToString (((FalseISerializable)obj).field));\r
+ }\r
+ \r
+ public object SetObjectData (object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)\r
+ {\r
+ ((FalseISerializable)obj).field = Convert.ToInt32 (info.GetValue("field", typeof(string)));\r
+ return obj;\r
+ }\r
+ }\r
+\r
[Serializable]\r
public class SimpleClass\r
{\r
SimpleClass _shared1;\r
SimpleClass _shared2;\r
SimpleClass _shared3;\r
+ \r
+ FalseISerializable _falseSerializable;\r
\r
public void Init()\r
{\r
_shared1 = new SimpleClass('A');\r
_shared2 = new SimpleClass('A');\r
_shared3 = _shared1;\r
+ \r
+ _falseSerializable = new FalseISerializable (2);\r
}\r
\r
public int SampleCall (string str, SomeValues sv, ref int acum)\r
_shared1.val = 'B';\r
SerializationTest.AssertEquals ("SomeValues._shared2", _shared2.val, 'A');\r
SerializationTest.AssertEquals ("SomeValues._shared3", _shared3.val, 'B');\r
+ \r
+ SerializationTest.AssertEquals ("SomeValues._falseSerializable", _falseSerializable.field, 2);\r
}\r
}\r
\r