2016-03-19 9 views
0

Das Problem ist einfach, ich möchte eine Methode zum Serialisieren erstellen und eine andere, um es zu öffnen, indem Sie jede Objektstruktur übergeben. Ich folgendes haben, die ist, was ich glaubte, sollte aber funktionieren, erraten, was es nicht:Wie injiziere ich ein Objekt zum Serialisieren in Datei?

List<string> list = new List<string>(); 
        list.Add("aaa"); 
        list.Add("bbb"); 

        FileSystem.SerializeToFile(list, ""); 
        List<string> anotherList = FileSystem.OpenSerialized(typeof(List<string>), ""); 



    public class FileSystem 
    { 
     public static void SerializeToFile(object toSerialize, string fileName) 
     { 
      XmlSerializer writer = new XmlSerializer(typeof(object)); 
      StreamWriter file = new StreamWriter(fileName); 
      writer.Serialize(file, toSerialize); 
      file.Close(); 
     } 

     public static object OpenSerialized(Type type, string fileName) 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(object)); 
      StreamReader reader = new StreamReader(fileName); 
      object something = serializer.Deserialize(reader); 
      return something; 
     } 
} 

Antwort

1

Die Konstrukteurs-Serializer einen Verweis auf die Art des Objekts erfordert es funktionieren sollte, leicht modifiziert, um Ihren Code zu passen Anforderung.

public class FileSystem 
{ 
    public static void SerializeToFile<T>(T toSerialize, string fileName) 
    { 
     XmlSerializer writer = new XmlSerializer(typeof(T)); 
     StreamWriter file = new StreamWriter(fileName); 
     writer.Serialize(file, toSerialize); 
     file.Close(); 
    } 

    public static T OpenSerialized<T>(string fileName) 
    { 
     XmlSerializer serializer = new XmlSerializer(typeof(T)); 
     StreamReader reader = new StreamReader(fileName); 
     object something = serializer.Deserialize(reader); 
     return (T)something; 
    } 
} 

und jetzt können wir dies als

verwenden
List<string> list = new List<string>(); 
list.Add("aaa"); 
list.Add("bbb"); 

FileSystem.SerializeToFile(list, @"d:\test.txt"); 
List<string> anotherList = FileSystem.OpenSerialized<List<string>>(@"d:\test.txt"); 
Verwandte Themen