保存文件 - xmlSerializer [英] Save file - xmlSerializer

查看:41
本文介绍了保存文件 - xmlSerializer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一种使用此代码序列化文件的方法:

I'm creating a method to serialize a file using this code:

public void Save(Object file, Type type, String path)
{
    // Create a new Serializer
    XmlSerializer serializer = new XmlSerializer(typeof(type));

    // Create a new StreamWriter
    StreamWriter writer = new StreamWriter(@path);

    // Serialize the file
    serializer.Serialize(writer, file);

    // Close the writer
    writer.Close();
}

但是当我尝试构建时,Visual Studio 告诉我这一点:错误 1 ​​找不到类型或命名空间名称 'type'(您是否缺少 using 指令或程序集引用?) c:\users\erik\documents\visual studio 2013\Projects\FileSerializer\FileSerializer\Class1.cs16 65 文件序列化器"

But Visual Studio tells me this when I attempt to build: "Error 1 The type or namespace name 'type' could not be found (are you missing a using directive or an assembly reference?) c:\users\erik\documents\visual studio 2013\Projects\FileSerializer\FileSerializer\Class1.cs 16 65 FileSerializer "

这是为什么?

**编辑*

有效的新代码:

public void Save(Object file, String path, Type type)
{
    // Create a new Serializer
    XmlSerializer serializer = new XmlSerializer(type);

    // Create a new StreamWriter
    TextWriter writer = new StreamWriter(path);

    // Serialize the file
    serializer.Serialize(writer, file);

    // Close the writer
    writer.Close();
}

public object Read(String path, Type type)
{
    // Create a new serializer
    XmlSerializer serializer = new XmlSerializer(type);

    // Create a StreamReader
    TextReader reader = new StreamReader(path);

    // Deserialize the file
    Object file;
    file = (Object)serializer.Deserialize(reader);

    // Close the reader
    reader.Close();

    // Return the object
    return file;
}

通过调用读取:

myClass newClass = (myClass)Read(file, type);

通过调用保存:

Save(object, path, type);

谢谢!埃里克

推荐答案

你的错误在 new XmlSerializer(typeof(type));.你不需要 typeof.new XmlSerializer(type); 就够了.

Your error is in new XmlSerializer(typeof(type));. You don't need typeof. new XmlSerializer(type); is enough.

由于您序列化了 file 对象(其类型可以在函数中确定),因此您不必传递其类型.所以你的代码可以重写为

Since you serialize file object (and its type can be determined in the function) you don't have to pass its type. So your code can be re-written as

public void Save<T>(T file, String path)
{
    XmlSerializer serializer = new XmlSerializer(typeof(T));

    using (StreamWriter writer = new StreamWriter(path))
    {
        serializer.Serialize(writer, file);
    }
}

这篇关于保存文件 - xmlSerializer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆