gpt4 book ai didi

c# - 如何忽略使用 BinaryFormatter 序列化的属性?

转载 作者:行者123 更新时间:2023-11-30 22:01:57 24 4
gpt4 key购买 nike

[Serializable]
class DOThis
{
private string _name;

public string Name
{
get { return _name; }
set { _name = value; }
}

public string Value
{
get
{
if (_name == "Hi")
return "Hey Hi";
else
return "Sorry I dont know you";
}
}
}

我要使用 BinaryFormatter 对上述类进行序列化。下面是序列化代码,

DOThis obj = new DOThis();
obj.Name = "Ho";
BinaryFormatter bfm = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bfm.Serialize(ms, obj);

此处如何在序列化和反序列化中忽略属性“Value”,因为我始终可以使用“Name”属性检索“Value”属性?

最佳答案

您不必对代码进行任何更改:BinaryFormatter 仅序列化字段,而不序列化属性,因此它不会序列化 Value

这是生成的 MemoryStream 的十六进制转储,它显示只有“_name”和“Ho”被序列化:

00 01 00 00 00 FF FF FF  FF 01 00 00 00 00 00 00  .....ÿÿÿÿ.......
00 0C 02 00 00 00 3B 44 65 6D 6F 2C 20 56 65 72 ......;Demo, Ver
73 69 6F 6E 3D 31 2E 30 2E 30 2E 30 2C 20 43 75 sion=1.0.0.0, Cu
6C 74 75 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 lture=neutral, P
75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 6E 75 ublicKeyToken=nu
6C 6C 05 01 00 00 00 0B 44 65 6D 6F 2E 44 4F 54 ll......Demo.DOT
68 69 73 01 00 00 00 05 5F 6E 61 6D 65 01 02 00 his....._name...
00 00 06 03 00 00 00 02 48 6F 0B ........Ho.

关于c# - 如何忽略使用 BinaryFormatter 序列化的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27286034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com