【发布时间】:2017-02-23 17:24:56
【问题描述】:
我正在构建对 WebAPI 服务调用的响应。默认的 XML 序列化程序主要为我工作。我需要生成的是这样的:
<fooCollection>
<fooMember>
<fooType1>
...bunch of properties for the fooMember
</fooType1>
</fooMember>
<fooMember>
<fooType2>
...bunch of properties for the fooMember
</fooType2>
</fooMember>
</fooCollection
我遇到的问题是<fooType> 元素目前是我模型中的一个对象,名为fooType。响应中的元素名称需要有不同的名称,具体取决于我的fooMember 对象的类型属性。这意味着使用像[DataContract] 和[DataMember] 属性给它一个名称而不是对象名称似乎不起作用,因为它们被设置一次,我无法找到如何在运行时更改它。
我的模型代码如下所示:
public partial class fooCollection {
private fooCollectionMember[] memberField;
[System.Xml.Serialization.XmlElementAttribute("fooMember")]
public fooCollectionMember[] member { get; set;}
}
public partial class fooCollectionMember {
private fooType fooTypeField;
public fooType fooType { get; set }
}
public partial class fooType {
private object fooProperty;
// ... more properties
public object fooProperty { get; set; }
// ... more properties
}
在运行时/序列化期间有没有一种方法可以为<fooType> 元素设置我的元素名称?
或者,有没有一种方法可以重新排列我的模型,使fooType 不是包含其他属性的对象,而是fooMember 对象的属性以及所有其他属性,但是,当序列化时,<fooType> 元素被命名为该属性的值并将其余属性封装在其中?
【问题讨论】:
标签: c# asp.net asp.net-web-api xml-serialization