public RequestRootBase Deserialize(XmlReader reader) { if (!reader.ReadToFollowing(RequestRootElementName)) { return(null); } if (!reader.ReadToFollowing(ActionElementName)) { return(null); } var typeName = reader[TypeAttributeName]; if (typeName == null) { return(null); } var type = BindToType(typeName); if (type == null) { throw new InvalidDataException(); // THROW AN EXCEPTION in this case } reader.ReadStartElement(); var serializer = new XmlSerializer(type); var action = serializer.Deserialize(reader); if (action == null) { return(null); } return(RequestRootHelper.CreateBase(action)); }