将对象序列化为字符串。

361

我有以下方法将一个对象保存到文件:

// Save an object out to the disk
public static void SerializeObject<T>(this T toSerialize, String filename)
{
    XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());
    TextWriter textWriter = new StreamWriter(filename);

    xmlSerializer.Serialize(textWriter, toSerialize);
    textWriter.Close();
}

我承认我没有编写它(我只将其转换为一个带有类型参数的扩展方法)。

现在,我需要将xml作为字符串返回给我(而不是保存到文件中)。我正在研究这个问题,但我还没有想出来。

我认为对于熟悉这些对象的人来说,这可能非常容易。如果不是,我最终会弄清楚的。

11个回答

-1
在一些罕见的情况下,您可能希望实现自己的字符串序列化。
但这可能是一个不好的主意,除非您知道自己在做什么。(例如用批处理文件进行I/O序列化)
像这样的东西可以解决问题(而且手动/批量编辑也很容易),但要小心应该执行一些更多的检查,比如名称不应包含换行符。
public string name {get;set;}
public int age {get;set;}

Person(string serializedPerson) 
{
    string[] tmpArray = serializedPerson.Split('\n');
    if(tmpArray.Length>2 && tmpArray[0].Equals("#")){
        this.name=tmpArray[1];
        this.age=int.TryParse(tmpArray[2]);
    }else{
        throw new ArgumentException("Not a valid serialization of a person");
    }
}

public string SerializeToString()
{
    return "#\n" +
           name + "\n" + 
           age;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接