2009-10-20 6 views
1

j'ai les classes suivantes en C# que je veux sérialisation:Question sur XmlSerializer dans .NET

Article

ProjectItem: Item

Dossier: Item

Projet (Contient une collection de article, qui peut être soit un ProjectItem ou un dossier)

Quand je sérialiser un « projet », je me suit ...

<Project> 
    <Item xsi:type="Folder"> 
    <Name>MyFolder</Name> 
    </Item> 
</Project> 

Alors que je voudrais quelque chose comme ...

<Project> 
    <Folder> 
    <Name>MyFolder</Name> 
    </Folder> 
</Project> 

Avez-vous une idée sur la façon dont pour faire ça? Merci d'avance.

Répondre

2

Je crois que vous avez besoin d'ajouter des attributs comme celui-ci à votre propriété du projet:

[XmlArray] 
[XmlArrayItem(ElementName="ProjectItem", Type=typeof(ProjectItem))] 
[XmlArrayItem(ElementName="Folder", Type=typeof(Folder))] 
public List<Item> Project 
{ 
    get; 
    set; 
} 
+0

ont parfaitement fonctionné. J'apprécie ton aide. –

2

Vous pouvez contrôler nommer par attributs:

public class MyEntity{ 
    [XmlElement(ElementName = "Folder")] 
    public someType ProjectItem{get;set;}; 
} 
+0

Merci pour votre réponse, mais cela n'a pas complètement résolu mon problème. La propriété "Project" de type "Project" peut contenir un dossier ou ProjectItem, donc je ne peux pas supposer qu'il sera toujours "Dossier" par exemple. –