在XML序列化期间忽略类函数/方法

时间:2010-10-27 01:09:00

标签: c# xml xml-serialization

如何忽略类的函数/方法,以便将其序列化为磁盘供以后使用?

我搜索过,真的找不到任何答案。我需要ToString(),因为我将Person的每个实例添加到列表框中。 ToString()是列表框中显示的内容。然后,我使用所选项目再次将其恢复以使用该对象。

x =(人)列表框选中的项目。

如果我尝试将其序列化,请将其炸毁。

public class Person
{    
    public Person()
    {
        messages = new List<Message>();
    }

    public string name{ get; set;}        
    public List<Message> messages{ get; set;}        

// How do you ignore this????
// [XMLIgnore] does not work
    public override string ToString()
    {
        return name;
    }
}

这是序列化它的调用。当我尝试创建XmlSearlizer对象时它会爆炸。

没有方法/功能的其他类可以正常工作。没问题。

public void serializeToXML<T>(T test)
{
    // If object has method or function it blows up here.
    XmlSerializer serializer = new XmlSerializer(typeof (T));
    // Hardcoded just for a test.
    TextWriter textWriter = new StreamWriter(@"C:\test.xml"); 
    serializer.Serialize(textWriter, test);
    textWriter.Close();
}

2 个答案:

答案 0 :(得分:2)

ToString()XmlSerializer没有影响。 XmlSerializer仅序列化公共属性和字段。不是方法。

我运行了示例代码,将Message替换为string,并在.NET 3.5中进行了序列化。你的Message课程中有一些你没有包含的内容,这会引起你所看到的任何错误。

答案 1 :(得分:0)

你真的需要ToString()方法吗?你为什么不能只使用你的'名字'属性?