2016-02-28 2 views
1

Я работаю над кухонным приложением, и вам нужно сохранить рецепты. Все отлично работает с XML-сериализацией, кроме List<IngredientMeasure> IngredientList. Я слышал, что у многих других людей были проблемы с сериализацией списков классов, и я увидел это: Serializing Lists of Classes to XML. Я пробовал решения там, но никто из них не работал. Вот поля для Recipe класса:Windows Universal XML Serialization

[DataContract] 
public class Recipe 
{ 
    [DataMember] 
    public static List<Recipe> RecipeList = new List<Recipe>(); 

    [DataMember] 
    public string Name { get; set; } 
    [DataMember] 
    public string FilePath { get; set; } 

    [DataMember] 
    public List<IngredientMeasure> IngredientList { get; set; } 

    [XmlArray("IngredientsList")] 
    public List<string> Ingredients = new List<string>(); 

    [DataMember] 
    public List<string> DirectionList { get; private set; } 
    [DataMember] 
    public List<string> Notes { get; private set; } 

    public Recipe() 
    { 

    } 
} 

Вот IngredientMeasure класс:

public class IngredientMeasure 
{ 
    [DataMember] 
    public Ingredient ingredient; 
    [DataMember] 
    public Measure measure; 

    public IngredientMeasure() 
    { 

    } 
} 

Любая помощь приветствуется.

+0

, пожалуйста, вы можете вставить исключение? – RicardoPons

+0

Добро пожаловать в StackOverflow, не могли бы вы вставить XML-текст, который вы хотите создать? – Fab

ответ

0

Из указанной вами ссылки XmlArray должен быть указан в списке предметов, содержащихся в, но не в списке строк.

[DataContract] 
public class Recipe 
{ 

    [XmlArray("IngredientsList", XmlArrayItem(typeof(IngredientMeasure), ElementName = "IngredientMeasure"))] 
    public List<IngredientMeasure> IngredientList { get; set; } 

    // ... other properties 
}