public class BinarySerialize
{
string strFile = "c:""book.data";
public void Serialize(Book book)
{
using (FileStream fs = new FileStream(strFile, FileMode.Create))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, book);
}
}
public Book DeSerialize()
{
Book book;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
BinaryFormatter formatter = new BinaryFormatter();
book = (Book)formatter.Deserialize(fs);
}
return book;
}
}
----------------------------------------------------------------------------------
public class SoapSerialize
{
string strFile = "c:""book.soap";
public void Serialize(Book book)
{
using (FileStream fs = new FileStream(strFile, FileMode.Create))
{
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(fs, book);
}
}
public Book DeSerialize()
{
Book book;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
SoapFormatter formatter = new SoapFormatter();
book = (Book)formatter.Deserialize(fs);
}
return book;
}
}
---------------------------------------------------------------
public class XmlSerialize
{
string strFile = "c:""book.xml";
public void Serialize(Book book)
{
using (FileStream fs = new FileStream(strFile, FileMode.Create))
{
XmlSerializer formatter = new XmlSerializer(typeof(Book));
formatter.Serialize(fs, book);
}
}
public Book DeSerialize()
{
Book book;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
XmlSerializer formatter = new XmlSerializer(typeof(Book));
book = (Book)formatter.Deserialize(fs);
}
return book;
}
}
采用xml序列化的方式只能保存public的字段和可读写的属性,对于private等类型的字段不能进行序列化
出现循环引用的情况,对于BinarySerialize和SoapSerialize可以正常序列化(.NET内部进行处理了),对于XmlSerialize出现这种情况会报错:"序列化类型 SerializableTest.Book 的对象时检测到循环引用。"
分享到:
相关推荐
hbasesink 自定义序列化类 ,可实现自定义rowkey及去除字段两边索引,具体请看下代码。 hbasesink 自定义序列化类 ,可实现自定义rowkey及去除字段两边索引,具体请看下代码。
在Delphi编程环境中,为了方便地管理和操作SQL语句,开发者可能会创建一个专门的序列化类来处理这些语句。这个"delphi sql语句序列化类"的设计目的就是提供一种高效且灵活的方式,使得SQL指令可以被存储、传输和恢复...
这个过程同样依赖于特定的序列化类,例如BinaryFormatter或XmlSerializer。反序列化时,我们需要确保接收的数据与原始对象类型匹配,否则可能会抛出异常。 为了简化序列化和反序列化的操作,开发者通常会创建一个...
一个c#的json序列化和反序列化类,调用很简单
需要注意的是,实现序列化的类应该谨慎处理其内部状态,因为序列化会保存对象的所有字段,包括私有(private)和受保护的(protected)成员。如果某个类的父类没有实现`Serializable`接口,那么子类仍然可以序列化,...
在这个特定的知识点中,我们聚焦于“Dynamics CRM 2011 编程系列:JSON序列化类”。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务和客户端脚本之间的数据传递。在Dynamics CRM ...
本资源提供了C#实现的序列化与反序列化类的源代码,支持对类和任意C#对象进行操作。 首先,我们要理解序列化的概念。序列化是将对象转换为可以持久存储或在网络上传输的格式的过程。在C#中,我们可以使用.NET框架...
详细解释了C++对类的序列化的原理,通过这个,可以自己编译出可以序列化和反序列化的代码来,而不再用MFC的宏,本想0积分的,但确实是自己慢慢测试编译的,好歹也有辛苦分,高手勿喷,新手共勉。
在VB.NET中,可以使用`System.Xml.Serialization`命名空间中的`XmlSerializer`类来实现XML的序列化和反序列化。 1. **XML序列化**:将对象实例转换为XML字符串。这通常通过创建一个`XmlSerializer`实例,然后调用其...
要实现自定义的枚举序列化和反序列化,我们需要创建一个继承自`Gson.TypeAdapter`的类。这个类需要重写`read()`和`write()`方法。`read()`方法负责将JSON解析为枚举值,而`write()`方法则将枚举值转化为JSON。下面是...
3. **IMPLEMENT_SERIAL宏**:在类的实现部分,使用`IMPLEMENT_SERIAL`宏来指定你的类的序列化类(通常是`CObject`)以及序列化版本号。这个宏实现了实际的序列化操作。 4. **serialize成员函数**:在你的类中,你...
在C#中,我们可以通过调用相应的序列化类的静态方法来完成这个过程。例如,如果我们使用XML序列化,我们可以调用XmlSerializer的Deserialize方法;如果使用JSON序列化,则可以调用JavaScriptSerializer的Deserialize...
2. ** serialVersionUID**:为了保证序列化版本的兼容性,每个可序列化类应定义一个`serialVersionUID`字段。如果不显式定义,Java会自动生成一个,但当类结构改变时可能导致异常。 3. **ObjectInputValidation**:...
在C#中,我们可以使用相同的序列化类进行反序列化,只需提供已序列化的数据和目标类型即可。 自定义事件在C#中是一种实现发布-订阅模式的方式,允许对象间通信而不直接耦合。事件通常包含一个委托类型和一个或多个...
这可以通过调用序列化类的`Deserialize`方法实现,它会创建一个新的对象并填充其属性值。 ```csharp // 使用BinaryFormatter进行反序列化 if (File.Exists("person.bin")) { using (var stream = new FileStream(...
C#自定义可序列化的Dictionary类型 在C#中,Dictionary类型是非常常用的数据结构,但是.NET 2.0中的泛型Dictionary却不支持XML序列化。这是一种非常不便的限制,因为在实际应用中,我们经常需要将数据序列化到XML...
C#中的反序列化同样可以使用上述的序列化类来完成。 3. **登录流程**: - 用户输入用户名和密码。 - 客户端将这些信息封装在一个对象中,比如`LoginRequest`,并使用序列化将其转换为字符串。 - 字符串通过HTTP...
`ObjectStreamClass`类提供了关于可序列化类的信息。它描述了一个类的序列化形式,包括类名、超类、序列化ID等信息。 **4.2 动态代理类描述符** 当序列化包含代理对象的类时,`ObjectStreamClass`会生成一个动态...
1. **创建一个XML序列化类**:首先,我们需要定义一个类,该类的属性与XML文件中的元素相对应。例如,如果XML文件包含电源配置信息,可能有一个类名为`PowerConfig`,其中包含如`Voltage`、`Current`和`Frequency`等...
2. **常用的序列化类** - **BinaryFormatter**: 这是.NET Framework中最基本的序列化器,它将对象序列化为二进制格式,适用于本地存储和内存中的数据交换。 - **XmlSerializer**: 生成XML格式的序列化数据,适合跨...