ServiceStackは、内部で.NETのXMLDataContractSerializerを使用します。したがって、モデルをサポートするカスタマイズで装飾することができます。したがって、上記のようなものを取得するには、次のようにすることができます。
[CollectionDataContract(Name="EmailPreferences", ItemName="EmailProgram")]
public class EmailPreferences : List<string>
{
public EmailPreferences() { }
public EmailPreferences(IEnumerable<string> collection) : base(collection){}
}
グローバルXML名前空間
各DataContractに名前空間を個別に追加することもできますが、代わりにすべてのDTOに同じ名前空間を共有させることをお勧めします。これにより、自動生成された繰り返しの名前空間がXMLに表示されなくなります。
ResponseStatus DTOはすでにhttp://schemas.servicestack.net/types
名前空間の下にあるので、名前空間が何であるかを気にしない場合は、そのままにしておきます。
すべてのDataContractを同じ名前空間の下に置く最も簡単な方法は、DTOが含まれる各C#名前空間のAssemblyInfo.csにこれらのアセンブリ全体の属性を配置することです。
[assembly: ContractNamespace("http://schemas.servicestack.net/types",
ClrNamespace = "ServiceStack.Examples.ServiceModel.Operations")]
[assembly: ContractNamespace("http://schemas.servicestack.net/types",
ClrNamespace = "ServiceStack.Examples.ServiceModel.Types")]