2016-03-19 17 views
0

問題はシンプルで、直列化するメソッドを作成し、別のオブジェクト構造体を渡すことで別のメソッドを開くことができます。私は動作するはずと信じ何で次のことを持っていますが、そうでないものを、推測:オブジェクトをファイルにシリアル化する方法

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

答えて

1

シリアライザのコンストラクタは、それが動作するはずのオブジェクトの型への参照が必要ですが、わずかにフィットするようにコードを修正しました要件。

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

、今、私たちは

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"); 
としてこれを使用することができます
関連する問題