我正在構建對WebAPI服務調用的響應。默認的XML序列化器大多爲我工作。我需要生成是這樣的:如何在XML序列化運行時(ASP.Net 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>
元素被命名爲該屬性的值並封裝其中的其餘屬性?