我有包含复杂类型的消息合约

时间:2015-08-10 09:18:26

标签: c# wcf

我有包含复杂类型的消息合约。在DataContract类中填充数据后,我将datacontract的对象传递给消息契约构造函数。数据合同有多种复杂类型。我想重命名响应xml元素。因为,它是一个复杂的类型,我能够重命名合同类名称。当我尝试重命名它的属性时,会在类名标记之外创建一个标记。

[MessageContract]
public class GetDetailsFromCardNumberResponse
{
    [MessageBodyMember]
    public GetDetailsFromCardNumberResponseBody Body { get; set; }

    [MessageBodyMember(Name = "PatronAccountCardValidation")]
    public PatronAccountCardValidation PatronValidation { get; set; }

    public GetDetailsFromCardNumberResponse() { }

    public GetDetailsFromCardNumberResponse(GetDetailsFromCardNumberResponseBody body)
    {
       PatronValidation = body.GetDetailsFromCardNumberResult;
    }
}

在上面的PatronAccountCardValidation是复杂的类型。在我试图分配给它的属性的构造函数中。但它不属于基本要素,如下所示

<PatronAccountCardValidation >
</PatronAccountCardValidation >
<PatronId></Patron>

我发现了为什么会这样。但不知道如何解决。请建议

1 个答案:

答案 0 :(得分:0)

尝试添加XmlAttributes来控制xml序列化:

[XmlRoot(ElementName = "YourCustomClassName")]
public class GetDetailsFromCardNumberResponse
{
    [XmlElement(ElementName = "YourCustomAttibuteName")]
    public PatronAccountCardValidation PatronValidation { get; set; }
}

希望有所帮助