WCF Datacontract для XML глубже, чем один слой - PullRequest
0 голосов
/ 22 февраля 2019

Извините за очень простой вопрос, я не могу найти ответ.Я пытаюсь написать datacontract для службы WCF, чтобы получить следующий XML:

<?xml version="1.0"?>
<CachedAwiData QReference="3" QAttempt="0" QReservation="{D6154D1C-6D42-4AA5-9FAC-217B2F9FE096}">
                <CachedAwiDataRecord>
                                <CustRef><![CDATA[1]]></CustRef>
                                <Details><![CDATA[Hello World]]></Details>
                                <PrefDay><![CDATA[Monday]]></PrefDay>
                                <PrefTime><![CDATA[8.00am - 9.00am]]></PrefTime>
                                <Priority><![CDATA[Urgent]]></Priority>
                                <Trade><![CDATA[Plasterer]]></Trade>
                </CachedAwiDataRecord>
</CachedAwiData> 

До сих пор я пробовал пару вещей и дошел до:

[DataContract(Namespace = "")]
public class CachedAwiData
{

}

[DataContract(Namespace = "")]
public class CachedAwiDataRecord : CachedAwiData
{
    [DataMember]
    public string CustRef { get; set; }
}

Я получил ответ, который, кажется, получает нулевое значение для CustRef:

<ResponseData xmlns="http://schemas.datacontract.org/2004/07/RestService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><CustRef i:nil="true" /></ResponseData>

Я предполагаю, что это связано с моим DataContract, но, возможно, я что-то здесь упускаю.Любые подсказки очень ценятся, или мне лучше вернуться к XML Serializer?

1 Ответ

0 голосов
/ 22 февраля 2019

Я не думаю, что наследство правильно.Я не очень часто использую DataContracts, но думаю, что вам нужно что-то вроде


    [DataContract(Namespace = "")]
    public class CachedAwiData
    {
        [DataMember]
        public CachedAwiDataRecord DataRecord;
    }

    [DataContract(Namespace = "")]
    public class CachedAwiDataRecord 
    {
        [DataMember]
        public string CustRef { get; set; }
    }
...