2013-05-27 4 views
0

J'ai 4 classe d'entité. A, B, C, D.Il a différentes propriétés comme l'ID, l'adresse et même le type complexe. Je veux écrire une méthode commune où je peux passer n'importe quelle liste et il convertira en XML. DisonsSérialiser tout type de liste en XML?

public string GetAnyListtoXML(Any type of list) 
     { 
      string myXML=string.Empty; 

return myXML; 
     } 

Répondre

1

Cette méthode vous permet de sérialiser ce que vous voulez. Votre classe d'entité doit avoir un constructeur sans paramètre.

Ce lien peut être utile de contrôler sérialisation: http://msdn.microsoft.com/en-us/library/2baksw0z%28v=vs.100%29.aspx

public string ObjectToXml<T>(T obj) 
    { 
     var stream = new StringWriter(); 

     string xmlDoc = string.Empty; 
     try 
     { 
      var xmlSerializer = new XmlSerializer(typeof (T)); 
      xmlSerializer.Serialize(stream, obj); 
      xmlDoc = stream.GetStringBuilder().ToString(); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Błąd pliku xml: " + ex); 
     } 
     finally 
     { 
      stream.Close(); 
     } 
     return xmlDoc; 
    } 



    public static T XmlToObject<T>(string xmlDoc) 
    { 
     var stream = new MemoryStream(); 
     byte[] xmlObject = Encoding.Unicode.GetBytes(xmlDoc); 

     stream.Write(xmlObject, 0, xmlObject.Length); 
     stream.Position = 0; 
     T message; 

     var ss = new XmlSerializer(typeof (T)); 
     try 
     { 
      message = (T) ss.Deserialize(stream); 
     } 
     catch (Exception) 
     { 
      message = default(T); 
     } 
     finally 
     { 
      stream.Close(); 
     } 
     return message; 
    } 

Si vous voulez cette méthode ne prendre que la liste, vous pouvez l'utiliser:

public string ObjectToXml<T>(List<T> obj) 
    { 
     var stream = new StringWriter(); 

     string xmlDoc = string.Empty; 
     try 
     { 
      var xmlSerializer = new XmlSerializer(typeof (List<T>)); 
      xmlSerializer.Serialize(stream, obj); 
      xmlDoc = stream.GetStringBuilder().ToString(); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Błąd pliku xml: " + ex); 
     } 
     finally 
     { 
      stream.Close(); 
     } 
     return xmlDoc; 
    } 
Questions connexes