.NET XmlSerializer 和多维数组

Ras*_*usW 5 .net c# xml xsd xmlserializer

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

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

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

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

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

Nie*_*ter 1

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

string[][]代替string[,]

或使用类似的东西List<List<T>>

您可以创建自己的自定义类展平多维数组。

或者,在您的类上使用 XmlIgnore,将多维数组展平为标准数组(如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 */ }
}
Run Code Online (Sandbox Code Playgroud)