XmlSerializer问题 默认是不行的不过你可以让需要序列化的类实现ISerializable 接口,自行控制序列化和反序列化过程。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我知到ISerializable有要重写GetData方法XmlSerializer再序列化时,也会调用它吗? yes,you can do like this:[Serializable]class test{private string name;protected test(SerializationInfo info, StreamingContext context): base(info, context) { name = info.GetString("name"); }public override void GetObjectData( SerializationInfo info, StreamingContext context ) { info.AddValue("name", name, typeof(string)); base.GetObjectData(info,context); }}} D:\My Documents\Visual Studio Projects\test\Class1.cs(60): “test.dsds.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)” : 没有找到适合的方法来重写 是IXmlSerializable接口而不是ISerializable接口后者只能用于SoapFormatter和BinaryFormatter(这两个会序列化所有字段,和XmlSerializer不一样)这样可能实现IXmlSerializable接口即可 [Serializable]public class XmlSerializerTest : IXmlSerializable{ public int i = 5; private int j = 6; public void Test() { Console.WriteLine(j); } #region IXmlSerializable 成员 public void WriteXml(XmlWriter writer) { // 添加 XmlSerializerTest.WriteXml 实现 writer.WriteElementString("i",i.ToString()); writer.WriteElementString("j",j.ToString()); } public System.Xml.Schema.XmlSchema GetSchema() { // TODO: 添加 XmlSerializerTest.GetSchema 实现 return null; } public void ReadXml(XmlReader reader) { // TODO: 添加 XmlSerializerTest.ReadXml 实现 } #endregion}// test:// XmlSerializer xs = new XmlSerializer(typeof(XmlSerializerTest));// xs.Serialize(Console.Out,new XmlSerializerTest()); 为此主题写了个blog:http://blog.sunmast.com/Sunmast/archive/2005/01/17/1168.aspx c#如何把大于80字的文本分成两个部分同时存储到数据库 2010应用程序能不能生成.net 1.1的dll? 谁能推荐几本学习Arx.net的好书呀? 繼承button控件問題,請教!!謝謝! DataGridView中将指定的文件拖放到桌面或者资源管理器 请问高手(c#2.0底层运做) 高分求一个C#开发伪邮件系统 C#获取电子秤重量 C# 映射调用方法返回对象 类型 错误 如何跟踪客户端的连接状态 C#中如何将一个struct存到文件中? 启动画面的制作!!!
you can do like this:
[Serializable]
class test
{
private string name;
protected test(SerializationInfo info, StreamingContext context):
base(info, context)
{
name = info.GetString("name");
}
public override void GetObjectData( SerializationInfo info, StreamingContext context )
{
info.AddValue("name", name, typeof(string));
base.GetObjectData(info,context);
}
}
}
后者只能用于SoapFormatter和BinaryFormatter(这两个会序列化所有字段,和XmlSerializer不一样)这样可能实现IXmlSerializable接口即可
public class XmlSerializerTest : IXmlSerializable
{
public int i = 5;
private int j = 6; public void Test()
{
Console.WriteLine(j);
} #region IXmlSerializable 成员 public void WriteXml(XmlWriter writer)
{
// 添加 XmlSerializerTest.WriteXml 实现
writer.WriteElementString("i",i.ToString());
writer.WriteElementString("j",j.ToString());
} public System.Xml.Schema.XmlSchema GetSchema()
{
// TODO: 添加 XmlSerializerTest.GetSchema 实现
return null;
} public void ReadXml(XmlReader reader)
{
// TODO: 添加 XmlSerializerTest.ReadXml 实现
} #endregion
}// test:
// XmlSerializer xs = new XmlSerializer(typeof(XmlSerializerTest));
// xs.Serialize(Console.Out,new XmlSerializerTest());
http://blog.sunmast.com/Sunmast/archive/2005/01/17/1168.aspx