我有几个类定义为消息合约,属性定义为消息体。我分别指定了wrappername和name属性。它适用于父类,但不适用于子类。
类:
[MessageContract(WrapperName = "ticketstatus",IsWrapped = true)]
public class TicketStatusResponse
{
[MessageBodyMember(Name="status")]
public string Status { get; set; }
[MessageBodyMember(Name="errorcode")]
public string ErrorCode { get; set; }
[MessageBodyMember(Name="errormessage")]
public string ErrorMessage { get; set; }
[MessageBodyMember(Name="tasks")]
public List<Task> Tasks { get; set; }
}
[MessageContract(WrapperName="task")]
public class Task
{
[MessageBodyMember(Name="taskname")]
public string TaskName { get; set; }
[MessageBodyMember(Name="complete")]
public string Complete { get; set; }
}
回复信息:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<ticketstatus xmlns="http://tempuri.org/">
<errorcode>0</errorcode>
<errormessage/>
<status>Pending</status>
<tasks xmlns:a="http://schemas.datacontract.org/2004/07/MessageContractExample.Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Task>
<a:Complete>1</a:Complete>
<a:TaskName>task1</a:TaskName>
</a:Task>
<a:Task>
<a:Complete>2</a:Complete>
<a:TaskName>task2</a:TaskName>
</a:Task>
</tasks>
<ticketno>567890</ticketno>
<waittime>4</waittime>
</ticketstatus>
</s:Body>
</s:Envelope>
我期望的xml标签名称“Task”应如下所示,因为我使用wrappername和name属性更改名称:
<a:task>
<a:complete>2</a:complete>
<a:taskname>task2</a:taskName>
</a:task>
但我得到了
<a:Task>
<a:Complete>1</a:Complete>
<a:TaskName>task1</a:TaskName>
</a:Task>
为什么包装器名称和名称属性不适用于子节点。如何修复节点名称?
有任何想法或提示吗?
答案 0 :(得分:1)
您是否考虑过IsWrapped = true
,因为这是类之间的差异。