当对 formatter 调用 Serialize 方法时,根据以下规则对象序列化继续进行: 进行检查以确定格式化程序是否具有代理选择器 — 如果它没有,则检查该代理选择器是否处理给定类型的对象。选择器处理该对象类型,对该代理选择器调用 ISerializable.GetObjectData。
如果没有代理选择器或者如果它不处理该类型,则进行检查以确定是否用 Serializable 属性标记了该对象。如果没有标记,则引发 SerializationException。
如果适当标记了它,则检查该对象是否实现 ISerializable。如果没有实现,则对该对象调用 GetObjectData。
如果它没有实现 ISerializable,则使用默认的序列化策略,同时序列化未标记为 NonSerialized 的所有字段。
如果没有代理选择器或者如果它不处理该类型,则进行检查以确定是否用 Serializable 属性标记了该对象。如果没有标记,则引发 SerializationException。
如果适当标记了它,则检查该对象是否实现 ISerializable。如果没有实现,则对该对象调用 GetObjectData。
如果它没有实现 ISerializable,则使用默认的序列化策略,同时序列化未标记为 NonSerialized 的所有字段。
解决方案 »
- C# Linq查询的一个问题
- C#.net 基于Oracle数据库 语句 输入的字符串格式不正确!
- (高分求助)数字相互关系
- rdlc报表问题 急。。b/s(今天结贴)
- 谁能帮我解释一下这个正则表达式的意义: @"#\?(?'property'\S+?)\?#"
- c#条形码控件问题 一直在线等
- VS 2003,Datagrid(WinForm)中,关于鼠标滚轮的问题
- 急啊~~~~(winForm下)我在DataGrid的一个列里加载了一个button,但为什么非要点一下才显示呢?怎么让它默认显示出来?谢谢
- 200分:求英文字母、数字和汉字共同组成的字符串的截取方法!解决立马给分!
- like无法通过日期查询出结果
- 请教:关于格式化字符串的问题!
- 如何得到SqlCommand里的meatData数据?
[Serializable()]
public class Test:ISerializable
{
public int i;
int j;
string k; public Test()
{
i = 20;
j = 30;
k = "Hello World";
} public Test(SerializationInfo info, StreamingContext context)
{
info.GetValue("tst",typeof(int));
} public void GetObjectData(SerializationInfo ifo, StreamingContext context)
{
ifo.AddValue("tst",i);
}
}
}// 序列化与反序列化代码
private void button1_Click(object sender, System.EventArgs e)
{
Test tt = new Test();
tt.i = 5600;
// Opens a file and serializes the object into it in binary format.
Stream stream = File.Open("MyClass1MyClass2.bin", FileMode.Create);
BinaryFormatter bformatter = new BinaryFormatter(); bformatter.Serialize(stream, tt);
stream.Close(); } private void button2_Click(object sender, System.EventArgs e)
{
Test ttt;
Stream stm = File.Open("MyClass1MyClass2.bin",FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
ttt = (Test)bf.Deserialize(stm);
stm.Close(); MessageBox.Show(ttt.i.ToString());
}写得不好,请多指教了