Структура WCF XML - как удалить узлы оболочки? - PullRequest
2 голосов
/ 19 апреля 2011

У меня возникают проблемы при использовании объектов List:

[DataContract]
public class Recipe
{
        [DataMember(Name="Allergies")]
        public List<AllergyModel> Allergies { get; set; }
}

[DataContract]    
public class AllergyModel
{
    public string Allergy { get; set; }
}

Как сделать, чтобы полученный XML не содержал узел AllergyModel? Когда я прихожу, чтобы прочитать параметр Recipe, свойство списка Allergies имеет значение null, потому что в исходном XML структура не имеет узла AllergyModel.

<Allergies>
    <a:AllergyModel>
        <a:Allergy>nuts</a:Allergy>
    </a:AllergyModel>
    <a:AllergyModel>
        <a:Allergy>wheat</a:Allergy>
    </a:AllergyModel>
</Allergies>

Ответы [ 2 ]

3 голосов
/ 19 апреля 2011

Попробуйте вместо этого использовать собственную коллекцию:

[CollectionDataContract(Name = "Allergies", ItemName = "Allergy")]
public class AllergyList : List<string>
{
    ...
}

Используйте эту коллекцию вместо List<AllergyModel>. Важно то, что вы можете передать имя элемента в пользовательской коллекции.

1 голос
/ 19 апреля 2011

Вместо этого вы можете использовать атрибут MessageContract и установить для параметра IsWrapped значение false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...