//</snippet2> //<snippet3> public object GetDeserializedObject(Object obj, Type targetType) { Console.WriteLine("GetDeserializedObject invoked"); // This method is called on deserialization. // If PersonSurrogated is being deserialized... if (obj is PersonSurrogated) { //... use the XmlSerializer to do the actual deserialization. PersonSurrogated ps = (PersonSurrogated)obj; XmlSerializer xs = new XmlSerializer(typeof(Person)); return((Person)xs.Deserialize(new StringReader(ps.xmlData))); } return(obj); }
//</snippet1> //<snippet2> public object GetObjectToSerialize(object obj, Type targetType) { Console.WriteLine("GetObjectToSerialize Invoked"); Console.WriteLine("\t type name: {0}", obj.ToString()); Console.WriteLine("\t target type: {0}", targetType.Name); // This method is called on serialization. // If Person is not being serialized... if (obj is Person) { Console.WriteLine("\t returning PersonSurrogated"); // ... use the XmlSerializer to perform the actual serialization. PersonSurrogated ps = new PersonSurrogated(); XmlSerializer xs = new XmlSerializer(typeof(Person)); StringWriter sw = new StringWriter(); xs.Serialize(sw, (Person)obj); ps.xmlData = sw.ToString(); return(ps); } return(obj); }