我正在移植部分 MathNet.Spatial 库以添加我需要的一些功能。我的项目以 .Net 7.0 为目标,库以更旧的版本为目标,我在移植序列化代码时遇到了问题。
我的类只包含两个字段(双 X,双 Y),就像图书馆那样。我需要为此类实现 IXmlSerializable。该库也实现了它,但我对如何用 .Net 7 重写以下代码一无所知。我用谷歌搜索了这个问题,但我一直碰到“往返”这个词,我很确定我知道这到底意味着什么,当您反序列化时,您拥有与序列化内容相同的副本。我是 c# 和 .Net 的新手,我正在以相当快的速度学习它,但这给我带来了麻烦,我必须把它做好。因此,如果有人可以帮助我移植这两个功能,那将对我有很大帮助。
`
void IXmlSerializable.ReadXml(XmlReader reader)
{
if (reader.TryReadAttributeAsDouble("X", out var x) &&
reader.TryReadAttributeAsDouble("Y", out var y))
{
reader.Skip();
this = new Point2D(x, y);
return;
}
if (reader.TryReadChildElementsAsDoubles("X", "Y", out x, out y))
{
reader.Skip();
this = new Point2D(x, y);
return;
}
throw new XmlException("Could not read a Point2D");
}
/// <inheritdoc />
void IXmlSerializable.WriteXml(XmlWriter writer)
{
writer.
writer.WriteElement("X", X, "G17");
writer.WriteElement("Y", Y, "G17");
}
`
我还注意到整个图书馆“G17”和“G15”经常出现在(反)序列化和 ToString 方法中,我想知道造成这种差异的原因是什么。
谢谢
我已经尝试过明显的剪切和粘贴,那是一条死胡同。我曾尝试寻找答案,但似乎从未找到令人满意的答案。 API 已经改变,我无法自己完成这个。