c# 简单序列化

序列化:是将对象状态转换为可保持或传输的格式的过程,原因有两个,第一是想永久的保存这些数据,以便将来可以重建这些数据。第二是想把数据从一个应用程序域发送到另外一个应用程序域中去。
反序列化:就是把存储介质中的数据重新构建为对象的一个过程。

 

首先创建一个类MyObject,如以下代码

MyObjectusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SerializeTest
{
    [Serializable]
    public class MyObject
    {
        public int n1 = 0;
        public int n2 = 0;
        public string str = null;
    }
}

再创建一个类用来写序列化和反序列化方法以下代码包含2种方式二进制和xml方式。

SerializableCodeusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;//用二进制方式进行序列化要导入的命名空间
using System.Xml.Serialization; //用xml方式进行序列化要导入的命名空间
namespace SerializeTest
{
    public class Serializable
    {
        public void SeriaByBinary()
        {
            MyObject obj = new MyObject();
            obj.n1 = 1;
            obj.n2 = 24;
            obj.str = "binary is good";
            IFormatter formatter = new BinaryFormatter();
            Stream stream=new FileStream("c:\\Myfile.bin",FileMode.Create,FileAccess.Write,FileShare.None);
            formatter.Serialize(stream,obj);
            stream.Close();
        }
        public MyObject DSeriaByBinary()
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream("c:\\Myfile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
            MyObject obj=(MyObject)formatter.Deserialize(stream);
            stream.Close();
            return obj;
        }
        public void SeriaByXml()
        {
            MyObject obj = new MyObject();
            obj.n1 = 1111;
            obj.n2 = 2222;
            obj.str = "xml is great";
            XmlSerializer xmls = new XmlSerializer(typeof(MyObject));
            StreamWriter sw = new StreamWriter("c:\\myobject.xml");
            xmls.Serialize(sw,obj);
            sw.Close();
        }
        public MyObject DSeriaByXml()
        {
            XmlSerializer xmls = new XmlSerializer(typeof(MyObject));
            FileStream fs = new FileStream("c:\\myobject.xml",FileMode.Open);
            MyObject obj=(MyObject)xmls.Deserialize(fs);
            fs.Close();
            return obj;
        }
    }

}

最后创建TEST 窗体事件

 

哈哈 ,ok 了 试试做一下吧。

 

转载于:https://www.cnblogs.com/xiaogelove/archive/2010/04/21/1717451.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net WebApi 开发中某些注意事项

目前在做.net开发。 需要开发一套webapi. 这里记录一下某些注意点。 1. 如何开启跨域 如果webapi的用户是域外用户,则需要根据需要开放跨域。 首先安装Install-Package Microsoft.AspNet.WebApi.Cors 在WebApiConfig.cs里开启config.EnableCors(); 可以控制开放的范…

laravel框架中引入Workerman

1.安装Workerman 首先在laravel根目录下安装Workerman 命令:$ composer require workerman/gateway-worker 2.创建 Workerman 启动文件 创建一个 artisan 命令行工具来启动 Socket 服务端&#xff0c;在 app/Console/Commands 目录下建立命令行文件。 <?php namespaceApp\C…

java扫描指定package注解_java随笔-扫描使用指定注解的类与方法

前几天项目中让扫描出所有使用Restful API的方法。刚开始还想着用python过滤关键字来查找的&#xff0c;后来想想可以使用反射来搞的。主要包含以下三个步骤&#xff1a;根据包名解析包的具体路径查找指定包下指定注解的类在上一步骤中得到的类中&#xff0c;依次扫描包含指定注…

windows mobile开发循序渐进(6)windows mobile device center 使用问题

由于个人中邪&#xff0c;在经历一次windows 7安装失败之后&#xff0c;贼心不死&#xff0c;于昨天又重新安装了windows 7&#xff0c;终于成功。 回到windows mobile的开发上来呢&#xff0c;首先是配置环境&#xff0c;按照之前的经验&#xff0c;比较顺利的安装了virtual p…

Python---基础---list(列表)

2019-05-20 一、 # append() 向列表末尾追加新元素 返回值Nonelist1 [1,2,3,4,5]print(id(list1))list1.append(6)print(id(list1)) 二、 #copy() 复制列表list1 [1,2,3,4,5]list2 list1.copy()print(list2)print(id(list1))print(id(list2)) 三、 #count() 计算某个元素…

mysql if selected_初识MySQL

安装下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/​dev.mysql.com双击.msi文件开始安装&#xff0c;采用Custom安装方式。配置安装完毕弹出配置&#xff0c;或者安装路径下bin文件夹下MySQLInstanceConfig.exe运行可以进行配置。采用Detailed Configuration-》…

VisualC++2010系列课程

VisualC2010系列课程&#xff0c; 请访问博客http://blog.csdn.net/yincheng01 &#xff08;基于Visual C2010与windows SDK fo windows7开发Windows 7超级任务栏应用程序http://blog.csdn.net/yincheng01/archive/2009/12/27/5086755.aspx基于Visual C2010与windows SDK fo wi…

【MongoDB学习笔记21】MongoDB的复合索引

索引的值是按照一定顺序排列的&#xff0c;因此使用索引键对文档进行搜索排序比较快&#xff1b;但是只有首先使用索引进行排序时&#xff0c;索引才有用&#xff1b;例如下面的排序里&#xff0c;“username”上的索引就没有起作用&#xff1a;> db.users.find().sort({&qu…

mysql 代理 a_Keepalived+Mysql+Haproxy

#dd dd0 配主从vi /etc/my.cnf[mysqld]server-id 1log-bin mysql-binbinlog-ignore-db mysql,information_schemabinlog_format mixedauto-increment-increment 2auto-increment-offset 1#ddgrant replication slave on *.* to dd192.168.55.% identified by 123456show …

你真的了解Ioc与AOP 吗?(2)

三、基于配置文件和Reflection的工厂模式 为了消除MainApp对其它组件的依赖性&#xff0c;我们引入工厂模式&#xff0c;并且根据配置文件指定的装配规程&#xff0c;利用.net提供的反射技术完成对象的组装工作。本部分代码仅仅提供一种功能演示&#xff0c;如果实际应用仍需进…

DataTime转Varchar

SELECT Convert(varchar(100),A.CreateTime,20) FROM [TB_Business_Award] A 转载于:https://www.cnblogs.com/Anthony518/p/10908263.html

关于一道数据库例题的解析。为什么σ age22 (πS_ID,SCORE (SC) ) 选项是错的?

本人大二学子。近段时间在做数据库复习题的时候遇到一道题&#xff0c;如下。 有关系SC&#xff08;S_ID&#xff0c;C_ID&#xff0c;AGE&#xff0c;SCORE&#xff09;&#xff0c;查找年龄大于22岁的学生的学号和分数&#xff0c;正确的关系代数表达式是&#xff08; &#…

砂.随笔.二十五.如果你是氧气

在跌倒的地方 勇敢站起来 我在这里 在纯真的梦里转载于:https://www.cnblogs.com/aque1984/archive/2010/05/07/1729361.html

java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键

文章转自&#xff1a;http://ivan4126.blog.163.com/blog/static/20949109220137753214811/在某项目中用到了 hibernate &#xff0c;大家都知道 hibernate 是 ORM 框架&#xff0c;他是有能力根据实体生成数据库表的。我们在单元测试的时候用到了 dbUnit &#xff0c;dbUnit 可…

OO第三单元总结:JML

目录 第三单元——jml、junit与图第三单元——jml、junit与图 〇、问题描述 ​ 本单元主题为JML的学习&#xff0c;问题载体为一个无向图路径管理系统。在三次作业种&#xff0c;情景不变&#xff0c;需求递增。因此需要在层次上做好安排。 一、JML语言 理论基础(Level 0) 注释…

沼跃鱼早已看穿了一切 C/C++

沼跃鱼早已看穿了一切 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 593 Solved: 229[Submit][Status][Web Board]Description 沼跃鱼打开密码门后发现门后是一个像迷宫一样的房间&#xff0c;墙上的指示牌写着&#xff1a;房间内某处有一宝箱&#xff0c;但是宝箱被上锁了…

c#扩展方法奇思妙用高级篇四:对扩展进行分组管理

从系列文章开篇到现在&#xff0c;已经实现的很多扩展了&#xff0c;但过多的扩展会给我们带来很多麻烦&#xff0c;试看下图&#xff1a; 面对这么多“泛滥”的扩展&#xff0c;很多人都会感到很别扭&#xff0c;的确有种“喧宾夺主”的感觉&#xff0c;想从中找出真正想用的方…

js 获取java_js中获取当前时间

var d new Date();var date d.getFullYear() "年" (d.getMonth() 1) "月" d.getDate() "日";var myDate new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate…

Robot Framework-Ride界面介绍及库的添加

Ride界面介绍1. Ride简介1.1什么是RideRide是robotframework的UI界面, 以HTML格式提供易于阅读的结果报告和日志, 用户可以自定义基于Python的测试库, 提供支持selenium的Web测试,语法和python很像。1.2 Ride界面介绍1.2.1主界面介绍&#xff1a; 1.2.2运行按钮和工程目录&a…

preloadlazy load

最近需要用到预加载和延迟加载的东东&#xff0c;就参考写了一个。 支持跨页面&#xff0c;支持超时设置与依赖设置。 (function($) { (function($) {$.preload function(data, cfg) {return new Loader(data, cfg);};var maps {}, on $.event.add, un $.event.remove, hea…