如何将对象注入Serialize to File?

时间:2016-03-19 01:05:05

标签: c# .net xml-serialization

问题很简单,我想创建一个序列化方法,另一个方法是通过传递任何对象结构来打开它。我有以下哪些是我认为应该有效的,但是,猜猜看,它没有:

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 个答案:

答案 0 :(得分: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");