2016-03-19 25 views
0

Sorun basit, seri hale getirilecek bir yöntem oluşturmak ve herhangi bir nesne yapısını geçirerek açmak için başka bir yöntem oluşturmak istiyorum. Ben ne tahmin çalışması ancak gerektiğini inanılan ne şu var, öyle değil: serializer en yapıcı çalışması gerekir nesnenin türüne başvuru gerektirirDosyaya Serileştirilecek bir nesne nasıl enjekte edilir?

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; 
     } 
} 

cevap

1

hafifçe sığacak için kodunuzu modifiye gereklilik.

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; 
    } 
} 

ve şimdi

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"); 
olarak kullanabilirsiniz
İlgili konular