c# - 如何在不使用“BinaryFormatter”的情况下创建深度克隆?
问题描述
我有一些 C# 代码用于执行对象的深层复制:
public static T Copy<T>(T objectToCopy)
{
T result = default(T);
using (var memoryStream = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(memoryStream, objectToCopy);
memoryStream.Seek(0, SeekOrigin.Begin);
result = (T)formatter.Deserialize(memoryStream);
memoryStream.Close();
}
return result;
}
我从 Visual Studio 收到此警告:
警告 SYSLIB0011
'BinaryFormatter.Serialize(Stream)' 已过时:'BinaryFormatter 序列化已过时,不应使用。有关更多信息,请参阅https://aka.ms/binaryformatter。
我得到同样的警告BinaryFormatter.Deserialize(Stream)
。
我查看了建议的链接,他们列出了一些首选的替代方案:
XmlSerializer
并将DataContractSerializer
对象图序列化为 XML 和从 XML 序列化。不要DataContractSerializer
与NetDataContractSerializer
.BinaryReader
对于 XML和BinaryWriter
JSON。System.Text.Json
将对象图序列化为 JSON的API。
我只是在努力弄清楚在我的具体情况下我将如何实施这些替代方案之一。
如果有人能在这方面帮助我,我将不胜感激。
谢谢你。
解决方案
推荐阅读
- oracle19c - 无法在 19c 中创建带有检查约束 JSON 的 oracle 表
- ms-access - 下拉菜单中已选择的条目显示名称(Access 2016)
- javascript - CSS动画无尽的水平滚动 - 鼠标悬停暂停
- go-cd - 在 Windows 的 GoCD 管道中添加材料时面临 SSL 证书问题错误
- xml - 在.net core webapi项目中存储xml静态字符串的位置
- amazon-s3 - 使用 lambda 文件流到 s3 文件上传
- powershell - Powershell 单元测试用例
- django - ModuleNotFoundError:没有名为“onbytes”的模块
- mongodb - 查询以查找特定时间和日期范围内的数据
- weblogic-10.x - weblogic.rjvm.PeerGoneException