Désérialiser à partir de la chaîne à la place TextReader

Je veux changer mon code de:

ssortingng path = @"c:\Directory\test.xml"; XmlSerializer s = new XmlSerializer(typeof(Car)); TextReader r = new StreamReader(path); Car car = (Car)s.Deserialize(r); r.Close(); 

dans un code qui convertirait un XML en une chaîne, puis convertirait une chaîne en object Car.

Est-ce possible?

 public static ssortingng XmlSerializeToSsortingng(this object objectInstance) { var serializer = new XmlSerializer(objectInstance.GetType()); var sb = new SsortingngBuilder(); using (TextWriter writer = new SsortingngWriter(sb)) { serializer.Serialize(writer, objectInstance); } return sb.ToSsortingng(); } public static T XmlDeserializeFromSsortingng(this ssortingng objectData) { return (T)XmlDeserializeFromSsortingng(objectData, typeof(T)); } public static object XmlDeserializeFromSsortingng(this ssortingng objectData, Type type) { var serializer = new XmlSerializer(type); object result; using (TextReader reader = new SsortingngReader(objectData)) { result = serializer.Deserialize(reader); } return result; } 

Pour l’utiliser:

 //Make XML var settings = new ObjectCustomerSettings(); var xmlSsortingng = settings.XmlSerializeToSsortingng(); //Make Object var settings = xmlSsortingng.XmlDeserializeFromSsortingng(); 

Si vous avez le XML stocké dans une variable de chaîne, vous pouvez utiliser un SsortingngReader :

 var xml = @""; var serializer = new XmlSerializer(typeof(Car)); using (var reader = new SsortingngReader(xml)) { var car = (Car)serializer.Deserialize(reader); } 

1-liner, prend un text chaîne XML et YourType comme type d’object attendu. pas très différent des autres réponses, juste compressé à 1 ligne:

 var result = (YourType)new XmlSerializer(typeof(YourType)).Deserialize(new SsortingngReader(text)); 

Copié sans vergogne de la désérialisation générique d’une chaîne xml

  public static T DeserializeFromXmlSsortingng(ssortingng xmlSsortingng) { var serializer = new XmlSerializer(typeof(T)); using (TextReader reader = new SsortingngReader(xmlSsortingng)) { return (T) serializer.Deserialize(reader); } } 
 static T DeserializeXml(ssortingng sourceXML) where T : class { var serializer = new XmlSerializer(typeof(T)); T result = null; using (TextReader reader = new SsortingngReader(sourceXML)) { result = (T) serializer.Deserialize(reader); } return result; }