`
wyf
  • 浏览: 436714 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

序列化类

阅读更多
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 自定义序列化类

    hbasesink 自定义序列化类 ,可实现自定义rowkey及去除字段两边索引,具体请看下代码。 hbasesink 自定义序列化类 ,可实现自定义rowkey及去除字段两边索引,具体请看下代码。

    delphi sql语句序列化类

    在Delphi编程环境中,为了方便地管理和操作SQL语句,开发者可能会创建一个专门的序列化类来处理这些语句。这个"delphi sql语句序列化类"的设计目的就是提供一种高效且灵活的方式,使得SQL指令可以被存储、传输和恢复...

    序列化和反序列化的封装类

    这个过程同样依赖于特定的序列化类,例如BinaryFormatter或XmlSerializer。反序列化时,我们需要确保接收的数据与原始对象类型匹配,否则可能会抛出异常。 为了简化序列化和反序列化的操作,开发者通常会创建一个...

    一个c#的json序列化和反序列化类

    一个c#的json序列化和反序列化类,调用很简单

    序列化类的作用Serializable

    需要注意的是,实现序列化的类应该谨慎处理其内部状态,因为序列化会保存对象的所有字段,包括私有(private)和受保护的(protected)成员。如果某个类的父类没有实现`Serializable`接口,那么子类仍然可以序列化,...

    Dynamics CRM 2011 编程系列:JSON序列化类

    在这个特定的知识点中,我们聚焦于“Dynamics CRM 2011 编程系列:JSON序列化类”。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务和客户端脚本之间的数据传递。在Dynamics CRM ...

    C#序列化与反序列化类-源代码

    本资源提供了C#实现的序列化与反序列化类的源代码,支持对类和任意C#对象进行操作。 首先,我们要理解序列化的概念。序列化是将对象转换为可以持久存储或在网络上传输的格式的过程。在C#中,我们可以使用.NET框架...

    C++序列化类的详细说明

    详细解释了C++对类的序列化的原理,通过这个,可以自己编译出可以序列化和反序列化的代码来,而不再用MFC的宏,本想0积分的,但确实是自己慢慢测试编译的,好歹也有辛苦分,高手勿喷,新手共勉。

    VB.NET XML和JSON序列化与反序列化

    在VB.NET中,可以使用`System.Xml.Serialization`命名空间中的`XmlSerializer`类来实现XML的序列化和反序列化。 1. **XML序列化**:将对象实例转换为XML字符串。这通常通过创建一个`XmlSerializer`实例,然后调用其...

    Gson 枚举类型的统一序列化/反序列化处理

    要实现自定义的枚举序列化和反序列化,我们需要创建一个继承自`Gson.TypeAdapter`的类。这个类需要重写`read()`和`write()`方法。`read()`方法负责将JSON解析为枚举值,而`write()`方法则将枚举值转化为JSON。下面是...

    MFC序列化资料文档 序列化资料

    3. **IMPLEMENT_SERIAL宏**:在类的实现部分,使用`IMPLEMENT_SERIAL`宏来指定你的类的序列化类(通常是`CObject`)以及序列化版本号。这个宏实现了实际的序列化操作。 4. **serialize成员函数**:在你的类中,你...

    C#序列化和反序列化案例.rar

    在C#中,我们可以通过调用相应的序列化类的静态方法来完成这个过程。例如,如果我们使用XML序列化,我们可以调用XmlSerializer的Deserialize方法;如果使用JSON序列化,则可以调用JavaScriptSerializer的Deserialize...

    java对象序列化和反序列化

    2. ** serialVersionUID**:为了保证序列化版本的兼容性,每个可序列化类应定义一个`serialVersionUID`字段。如果不显式定义,Java会自动生成一个,但当类结构改变时可能导致异常。 3. **ObjectInputValidation**:...

    C#序列化反序列化实例

    在C#中,我们可以使用相同的序列化类进行反序列化,只需提供已序列化的数据和目标类型即可。 自定义事件在C#中是一种实现发布-订阅模式的方式,允许对象间通信而不直接耦合。事件通常包含一个委托类型和一个或多个...

    c#对象序列化与反序列化实例

    这可以通过调用序列化类的`Deserialize`方法实现,它会创建一个新的对象并填充其属性值。 ```csharp // 使用BinaryFormatter进行反序列化 if (File.Exists("person.bin")) { using (var stream = new FileStream(...

    C#自定义可序列化的Dictionary类型

    C#自定义可序列化的Dictionary类型 在C#中,Dictionary类型是非常常用的数据结构,但是.NET 2.0中的泛型Dictionary却不支持XML序列化。这是一种非常不便的限制,因为在实际应用中,我们经常需要将数据序列化到XML...

    c# CS登录实现(序列化反序列化)LoginProcessVersion1.0

    C#中的反序列化同样可以使用上述的序列化类来完成。 3. **登录流程**: - 用户输入用户名和密码。 - 客户端将这些信息封装在一个对象中,比如`LoginRequest`,并使用序列化将其转换为字符串。 - 字符串通过HTTP...

    Java对象序列化标准最新版

    `ObjectStreamClass`类提供了关于可序列化类的信息。它描述了一个类的序列化形式,包括类名、超类、序列化ID等信息。 **4.2 动态代理类描述符** 当序列化包含代理对象的类时,`ObjectStreamClass`会生成一个动态...

    Xml反序列化

    1. **创建一个XML序列化类**:首先,我们需要定义一个类,该类的属性与XML文件中的元素相对应。例如,如果XML文件包含电源配置信息,可能有一个类名为`PowerConfig`,其中包含如`Voltage`、`Current`和`Frequency`等...

    wpf序列化代码

    2. **常用的序列化类** - **BinaryFormatter**: 这是.NET Framework中最基本的序列化器,它将对象序列化为二进制格式,适用于本地存储和内存中的数据交换。 - **XmlSerializer**: 生成XML格式的序列化数据,适合跨...

Global site tag (gtag.js) - Google Analytics