如何忽略类的函数/方法,以便将其序列化为磁盘供以后使用?
我搜索过,真的找不到任何答案。我需要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();
}
答案 0 :(得分:2)
ToString()
对XmlSerializer
没有影响。 XmlSerializer
仅序列化公共属性和字段。不是方法。
我运行了示例代码,将Message
替换为string
,并在.NET 3.5中进行了序列化。你的Message
课程中有一些你没有包含的内容,这会引起你所看到的任何错误。
答案 1 :(得分:0)
你真的需要ToString()方法吗?你为什么不能只使用你的'名字'属性?