2010-02-16 4 views
2

Le problème est que je ne reçois pas la structure de XML que je veux. Mon code est le suivant:Essayer de sérialiser un contrat de données qui contient une liste d'autres contrats de données C#

[DataContract] 
public class Persons 
{ 
    [DataMember] 
    public List<Person> Personas; 
} 

[DataContract] 
public class Person 
{ 
    [DataMember(Name="SSN")] 
    public long SSN 
    { 
     get; 
     set; 
    } 
    [DataMember(Name="Name")] 
    public string Name 
    { 
     get; 
     set; 
    } 

Et quand je lance DataContractSerializer le XML retourne est:

<Persons xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WCFTest"> 
<Personas> 
    <Person> 
    <Name>B</Name> 
    <SSN>1234</SSN> 
    </Person> 
    <Person> 
    <Name>I</Name> 
    <SSN>5678</SSN> 
    </Person> 
</Personas> 
</Persons> 

Je woul aime éliminer soit l'élément Personnes ou Personas, l'élément racine doit contenir une liste de Personne.

+0

Avez-vous besoin de la Personas classe? Sinon, vous pouvez simplement utiliser la liste . – Carra

Répondre

2

Si vous voulez que l'élément racine soit une liste de Person, il suffit de sérialiser la liste au lieu de sérialiser les Personas.

DataContractSerializer ser = 
       new DataContractSerializer(typeof(List<Person>)) 
ser.WriteObject(writer, persons.Personas) 

au lieu de

DataContractSerializer ser = 
       new DataContractSerializer(typeof(Persons)) 
ser.WriteObject(writer, persons) 

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx

Questions connexes