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
オブジェクトのtypeプロパティに応じて別の名前にする必要があります。これは、[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>
要素がシリアル化されていますか?