私は国際的な HTTP 標準に合わせてサービスを作成しています。単一、複数、およびエラーと呼ばれる 3 つの異なる XML 結果を返すことができるメソッドが 1 つあります。これで、これらの各結果を使用して生成できる IXmlSerializable クラスを作成しました。ただし、WCF は、単一の戻り XML ルート名しか持てないと主張しているようです。Single、Multiple、または Errorのいずれかのカスタム オブジェクトの XmlRoot を選択する必要があります。
実行時にルートを選択できるように WCF を設定するにはどうすればよいですか?
これは私が現在持っているものです。
/// <summary>
/// A collection of items.
/// </summary>
[XmlRoot("Multiple", Namespace = "DAV:")]
public sealed class ItemCollection : IEnumerable<Item>, IXmlSerializable
/// <summary>
/// Processes and returns the items.
/// </summary>
[WebInvoke(Method = "POST", UriTemplate = "{*path}", BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
[XmlSerializerFormat]
ItemCollection Process(string path);
ItemCollection は IXmlSerializable を実装し、どの戻り値を書き込むかを選択できますが、ItemCollection クラスの XmlRoot 属性により、ルート XML ノードは常に複数になります。