.NET XmlSerializer和多维数组

5
我正在实现一个程序,作为现有软件的客户端。该协议使用XML模式定义,并包括多维数组。
.net XmlSerializer无法处理这些 - 这是已知的问题。
是否有一种方法可以扩展XmlSerializer,以便我可以实现对此的处理,或者是否有完整的(免费或商业)替代品XmlSerializer,可以处理多维数组? SharpSerializer似乎不会创建模式定义的XML,而是使用自己的序列化格式。
我想我可以使用sgen.exe生成序列化器代码,然后手动编辑以添加必要的处理,但我想避免这样做。

你可以给你的类添加一个属性,该属性可以给出数组字段的字符串。使用XmlIgnore忽略数组字段,并使该属性可序列化。 - Alioza
1个回答

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 */ }
}

那些get和set大括号里面放什么东西? - user3717478
我在这里回答了自己的评论:https://dev59.com/mUbRa4cB1Zd3GeqP1pRg#43050791 - user3717478

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接