社区
C#
帖子详情
关于序列化到内存的问题,详情请进
liming0605
2009-04-30 10:31:42
现在我需要序列化一个Entity,但是只希望他序列化到内存就好了,不需要出实际的物理文件!
因为我只是希望通过序列化取得Entity的字段属性什么的。。
请知道的达人给点代码,,谢谢!
...全文
186
10
打赏
收藏
关于序列化到内存的问题,详情请进
现在我需要序列化一个Entity,但是只希望他序列化到内存就好了,不需要出实际的物理文件! 因为我只是希望通过序列化取得Entity的字段属性什么的。。 请知道的达人给点代码,,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
coconutyf
2009-05-03
打赏
举报
回复
都没满足就反省一下自己的问题是不是没提明白啊,语言表达能力也很重要呀。
liming0605
2009-04-30
打赏
举报
回复
都没有满足。。
蓝海D鱼
2009-04-30
打赏
举报
回复
对象的序列化
http://www.cnblogs.com/ring1981/archive/2006/07/18/453512.html
.net中对象的序列化是指将对象的状态存储起来,先将对象的字段和属性以及类名转换为字节流,然后再把字节流写入数据流。通过对对象反序列化,得到原对象完全相同的副本。
对象的序列化主要的目的是将对象持久化,经过持久化的对象可以从一个地方传输到另一个地方。
在.net中, IFormatter接口提供了对象序列化的功能。他有两个公有的方法:
反序列化对象方法
Deserialize : Deserializes the data on the provided stream and reconstitutes the graph of objects。
序列化对象方法
Serialize:Serializes an object, or graph of objects with the given root to the provided stream。
我们可以将对象序列化成两种格式:
BinaryFormatter :将对象序列化为二进制格式
SoapFormatter:将对象序列化为Soap格式
代码:
//要进行序列化的类
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace SerializeDemos
6{
7 [Serializable]
8 public class Car
9 {
10 private string _Price;
11 private string _Owner;
12 public string Price
13 {
14 get { return this._Price; }
15 set { this._Price = value; }
16 }
17 public string Owner
18 {
19 get { return this._Owner; }
20 set { this._Owner = value; }
21 }
22 public Car(string o, string p)
23 {
24 this.Price = p;
25 this.Owner = o;
26 }
27 }
28}
29
//序列化以及反序列化对象
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Drawing;
6using System.Text;
7using System.Windows.Forms;
8using System.IO;
9using System.Runtime.Serialization.Formatters.Binary;
10using System.Runtime.Serialization.Formatters.Soap;
11using System.Xml.Serialization;
12
13
14namespace SerializeDemos
15{
16
17 public partial class Form1 : Form
18 {
19 public Form1()
20 {
21 InitializeComponent();
22 }
23 private void Form1_Load(object sender, EventArgs e)
24 {
25
26 }
27
28 private void button1_Click(object sender, EventArgs e)
29 {
30 Car car = new Car(this.txtOwner.Text, this.txtPrice.Text);
31 FileStream fileStream = new FileStream("SerializedCar.bin", FileMode.Create);
32 // 用二进制格式序列化
33 BinaryFormatter binaryFormatter = new BinaryFormatter();
34 binaryFormatter.Serialize(fileStream, car);
35 fileStream.Close();
36 MessageBox.Show("Successful");
37 }
38
39 private void button2_Click(object sender, EventArgs e)
40 {
41 Car car = new Car(this.txtOwner.Text, this.txtPrice.Text);
42 FileStream fileStream = new FileStream("SerializedCar.Soap", FileMode.Create);
43 // 序列化为Soap
44 SoapFormatter formatter = new SoapFormatter();
45 formatter.Serialize(fileStream, car);
46 fileStream.Close();
47 MessageBox.Show("Successful");
48 }
49
50 private void button3_Click(object sender, EventArgs e)
51 {
52 Car car = new Car(this.txtOwner.Text, this.txtPrice.Text);
53 FileStream fileStream = new FileStream("SerializedCar.xml", FileMode.Create);
54 // 序列化为xml
55 SoapFormatter formatter = new SoapFormatter();
56 formatter.Serialize(fileStream, car);
57 fileStream.Close();
58 MessageBox.Show("Successful");
59 }
60
61 private void button4_Click(object sender, EventArgs e)
62 {
63 System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();
64 //二进制格式反序列化
65 Stream stream = new FileStream("SerializedCar.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
66 Car mycar = (Car)formatter.Deserialize(stream);
67 stream.Close();
68 MessageBox.Show(string.Format("Price of Car: {0},\n Owner:{1}", mycar.Price, mycar.Owner));
69 }
70
71 private void button5_Click(object sender, EventArgs e)
72 {
73 System.Runtime.Serialization.IFormatter formatter = new SoapFormatter();
74 //Soap格式反序列化
75 Stream stream = new FileStream("SerializedCar.Soap", FileMode.Open, FileAccess.Read, FileShare.Read);
76 Car mycar = (Car)formatter.Deserialize(stream);
77 stream.Close();
78 MessageBox.Show(string.Format("Price of Car: {0},\n Owner:{1}", mycar.Price, mycar.Owner));
79 }
80
81 private void button6_Click(object sender, EventArgs e)
82 {
83 System.Runtime.Serialization.IFormatter formatter = new SoapFormatter();
84 //Xml格式反序列化
85 Stream stream = new FileStream("SerializedCar.xml", FileMode.Open, FileAccess.Read, FileShare.Read);
86 Car mycar = (Car)formatter.Deserialize(stream);
87 stream.Close();
88 MessageBox.Show(string.Format("Price of Car: {0},\n Owner:{1}", mycar.Price, mycar.Owner));
89 }
90 }
91}
liming0605
2009-04-30
打赏
举报
回复
[Quote=引用 4 楼 lic_go 的回复:]
这个就是流里的序列化与反序列化以及类型转换问题
认真看好书吧
[/Quote]
…………现在急啊
Garnett_KG
2009-04-30
打赏
举报
回复
可以序列化到MemoryStream啊
Neil198
2009-04-30
打赏
举报
回复
/// <summary>
/// 对象序列化,对象必须具有可序列化标记([Serializable]),且有读写方法的公共属性(public)
/// </summary>
/// <param name="type">对象类型</param>
/// <param name="serialObject"></param>
/// <returns></returns>
public static string Serialization(Type type, object serialObject)
{
StringBuilder sb = new StringBuilder();
TextWriter writer = new StringWriter(sb);
XmlSerializer serializer = new XmlSerializer(type);
serializer.Serialize(writer, serialObject);
string result = sb.ToString().Replace("utf-16", "utf-8");
return result;
}
/// <summary>
/// 对象反序列化
/// </summary>
/// <param name="type"></param>
/// <param name="content">xml</param>
/// <returns></returns>
public static object Deserialization(Type type, string xmlString)
{
// XmlTextReader tr = new XmlTextReader(new StringReader(xmlString));
XmlReader reader = XmlReader.Create(new StringReader(xmlString));
XmlSerializer serializer2 = new XmlSerializer(type);
return serializer2.Deserialize(reader);
}
lic_go
2009-04-30
打赏
举报
回复
这个就是流里的序列化与反序列化以及类型转换问题
认真看好书吧
liming0605
2009-04-30
打赏
举报
回复
[Quote=引用 2 楼 wartim 的回复:]
从流里反系列化出来就是一个object了么,把object强行转换一下类型不可以了
[/Quote]
跟一楼说的一样的?
wartim
2009-04-30
打赏
举报
回复
从流里反系列化出来就是一个object了么,把object强行转换一下类型不可以了
coconutyf
2009-04-30
打赏
举报
回复
public static MemoryStream Serialize_Binary(object obj)
{
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.AssemblyFormat = FormatterAssemblyStyle.Full;
bf.TypeFormat = FormatterTypeStyle.TypesAlways;
bf.Serialize(ms, obj);
return ms;
}
public static object Deserialize_Binary(MemoryStream ms)
{
ms.Seek(0, SeekOrigin.Begin);
BinaryFormatter bf = new BinaryFormatter();
bf.AssemblyFormat = FormatterAssemblyStyle.Full;
bf.TypeFormat = FormatterTypeStyle.TypesAlways;
object obj = bf.Deserialize(ms);
return obj;
}
深入理解RPC—
序列化
为什么需要
序列化
? 首先,我们得知道什么是
序列化
与反
序列化
。 我们先回顾下RPC通信的流程: 网络传输的数据必须是二
进
制数据,但调用方请求的出入参数都是对象。...总结来说,
序列化
就是将对象转换成二
进
拓展知识四:
序列化
与反
序列化
(Serialization and Deserialization)
序列化
是指将
内存
中的对象转换为一种可以存储或传输的格式(通常是字节序列)的过程。反
序列化
则是
序列化
的逆过程,它将存储或传输的字节序列重新转换为
内存
中的对象。
Java基础——对象的
序列化
(通俗易懂,排版优美)
Java基础——对象的
序列化
什么是对象的
序列化
(Serialization) “
序列化
”是一种把对象的状态转化成字节流的机制,“反序列”是其相反的过程,把
序列化
成的字节流用来在
内存
中重新创建一个实际的Java对象。...
C#中关于类的
序列化
1.什么是
序列化
序列化
是将对象状态转换为可保持或传输的格式的过程,在
序列化
过程中,对象的公共字段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流。与
序列化
相对的是反
序列化
...
【LeetCode力扣】297. 二叉树的
序列化
与反
序列化
297. 二叉树的
序列化
与反
序列化
- 力扣(LeetCode)二叉树
序列化
就是将
内存
中的二叉树变成硬盘中的字符串形式,并且要求每个二叉树能够对应一个唯一的字符串。二叉树反
序列化
就是将这个唯一字符串在
内存
中还原回对应...
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章