C# 序列化用例

C# 序列化用例,c#,serialization,wpf,C#,Serialization,Wpf,我不清楚什么时候应该使用序列化/反序列化技术 有人能给我提供一些基本的用例场景吗?两个明显的例子是,当您需要跨流程边界传输类的实例(例如,当使用WCF或其他远程通信技术时)或希望将实例持久化到流(可能是文件)中时.序列化只是以序列化状态表示对象实例的一种艺术,允许随时将其重新创建为对象类型。两个简单的用例是简单地将对象写入一个文件并将它们写入流(用于网络通信、进程间通信或其他) 例如,如果要将一个简单的数据传输到以下位置: public class TestDto { public st

我不清楚什么时候应该使用序列化/反序列化技术


有人能给我提供一些基本的用例场景吗?

两个明显的例子是,当您需要跨流程边界传输类的实例(例如,当使用WCF或其他远程通信技术时)或希望将实例持久化到流(可能是文件)中时.

序列化只是以序列化状态表示对象实例的一种艺术,允许随时将其重新创建为对象类型。两个简单的用例是简单地将对象写入一个文件并将它们写入
(用于网络通信、进程间通信或其他)

例如,如果要将一个简单的数据传输到以下位置:

public class TestDto
{
    public string TestText { get; set; }
    public string MoreText { get; set; }
}
。。您需要添加
[Serializable]
,并使用
二进制格式化程序
,以便能够从
网络流的另一端读取它

默认情况下,您不能简单地将对象实例写入任何形式的
或文件,并使其在另一端保持不变。当然,有一些库可以提供帮助(例如WCF),它们将在内部进行转换(对于
[Serializable]
类)


(我不知道为什么会这样,但序列化肯定不是特定于WPF的)

序列化是将对象转换为某种编码表示的过程,以将其从一个位置移动到另一个位置。通常,它是将对象转换为字节数组或XML字符串之类的内容的过程,但如果需要,也可以序列化为其他格式

序列化最常见的用途是当您需要跨进程、机器,或者更准确地说,跨AppDomain边界移动对象时。因此,如果要将对象从服务器A发送到服务器B,则必须序列化服务器A上的对象,然后将该对象的编码表示形式发送到服务器B,并让服务器B反序列化该对象,以便在另一端使用它


并非所有对象都可以轻松序列化——例如,如果将指针发送到另一台服务器,则内存中有指向服务器上某个位置的指针的对象可能没有意义。在这种情况下,您必须编写自己的自定义逻辑来确定如何使用该指针。也许您根本不会序列化对象的属性。。。也许您还可以序列化指针指向的对象——这取决于您。这就是为什么序列化并不总是简单或自动的。

我添加了wpf,因为我认为查看此标记的人也可以为我提供一些帮助suggestions@iltzortz但除非你在寻找与WPF有关的答案,否则你不应该真的使用这个标签