.NET XmlSerializer 和多维数组

.NET XmlSerializer and multidimensional arrays

我正在实施一个程序,该程序充当某些现有软件的客户端。该协议是使用 XML 模式定义的,它包括多维数组。

.net XmlSerializer 无法处理这些 - 这是一个已知问题

有没有办法扩展 XmlSerializer 以便我可以对此进行处理,或者是否有 XmlSerializer 的完整(免费或商业)替代品可以处理多维数组?

SharpSerializer 似乎没有创建定义的模式 XML,而是使用它自己的序列化格式。

我想我可以使用 sgen.exe 生成序列化程序代码,然后手动编辑它以添加必要的处理,但我想避免这种情况。

如果您可以控制更改架构,则可以尝试使用 锯齿状数组 而不是多维数组。

string[][] 而不是 string[,]

或使用 List<List<T>>

您可以创建自己的自定义class,从而展平多维数组。

或者,在您的 class 上使用 XmlIgnore, 将多维数组展平 为标准数组(建议 here by Marc Gravell

[XmlIgnore]
public int[, ,] Data { get; set; }

[XmlElement("Data"), Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public int[] DataDto
{
    get { /* flatten from Data */ }
    set { /* expand into Data */ }
}