2015-08-10 4 views
1

У меня есть контракт с контрактом, который содержит сложные типы. После заполнения данных в классе 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 является комплекс type.Inside конструктора я попытался присвоить свои свойства. Но он выходит за пределы базового элемента как ниже

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

Я нашел, почему это происходит. Но не уверен, как решить. Просьба предложить

+0

вы пытались добавить [KnownType (TYPEOF (PatronAccountCardValidation))] атрибут в вашей GetDetailsFromCardNumberResponse? – jtabuloc

+0

Нет, я должен попробовать? – user3403111

+0

Да, и делайте то же самое с этими классами с зависимостью/ссылкой с другим классом. – jtabuloc

ответ

0

Попробуйте добавить XmlAttributes контролировать XML-сериализацию:

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

Надеется, что это помогает

Смежные вопросы