2013-05-26 13 views
9

Ich erhalte die folgende Fehlermeldung auf dem unten stehenden Klasse:XmlAttribute/XmlText kann nicht verwendet werden, um komplexe Typen zu codieren

Kann nicht Mitglied ‚Zutat‘ des Typs DataObjects.Ingredient serialisiert. XmlAttribute/XmlText kann nicht zum Codieren komplexer Typen verwendet werden.

Irgendwelche Gedanken, warum?

[DataContract] 
[Serializable] 
[XmlRoot("ingredient")] 
public class Ingredient 
{ 
    private string id; 
    private string name; 
    private string description; 

    private IngredientNutrient[] nutrients; 

    public Ingredient(string id, string name, string description, IngredientNutrient[] nutrients) 
    { 
     this.id = id; 
     this.name = name; 
     this.description = description; 
     this.nutrients = nutrients; 
    } 

    public Ingredient(string id, string name, string description) 
    { 
     this.id = id; 
     this.name = name; 
     this.description = description; 
    } 

    public Ingredient() 
    { 

    } 

    [DataMember] 
    [XmlAttribute("id")] 
    public string ID 
    { 
     get { return this.id; } 
     set { this.id = value; } 
    } 

    [DataMember] 
    [XmlAttribute("name")] 
    public string Name 
    { 
     get { return this.name; } 
     set { this.name = value; } 
    } 

    [DataMember] 
    [XmlAttribute("description")] 
    public string Description 
    { 
     get { return this.description; } 
     set { this.description = value; } 
    } 

    [DataMember] 
    [XmlArray("nutrients")] 
    [XmlArrayItem("ingredientnutrient")] 
    public IngredientNutrient[] Nutrients 
    { 
     get { return this.nutrients; } 
     set { this.nutrients = value; } 
    } 

} 

Antwort

27

Sie werden wahrscheinlich [XmlElement] statt [XmlAttribute] verwenden. Ein Attribut kann kein komplexer Typ sein.

1

Ein anderer Vorschlag: Lassen Sie das Präfix für (Listen-) Eigenschaften unter dem Wurzelelement weg.

Verwandte Themen