我正在编写一个符合国际 HTTP 标准的服务,并且有一种方法可以返回三种不同的 XML 结果,分别称为 Single、Multiple 和 Error。现在我编写了一个 IXmlSerializable 类,它可以使用这些结果中的每一个并生成它们。但是,WCF 似乎坚持我只能有一个返回 XML 根名称。我必须为我的单个、多个或错误的自定义对象选择一个 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 并且可以选择要写入的可能返回,但是根 XML 节点始终是多个,因为 ItemCollection 类上的 XmlRoot 属性。