1

j'ai les types suivantsfichier de paramètres .Net, types complexes et sérialisation

[Serializable, XmlType(Namespace="http://mycompany/foo"] 
public sealed class Limit 
{ 
    [XmlElement(ElementName="Value1")] 
    public double Value1 {get;set;} 

    [XmlElement(ElementName="ComplexValue1")] 
    public ComplexValue ComplexValue1 {get;set;} 
} 

[Serializable, XmlType(Namespace="http://mycompany/foo"] 
public sealed class ComplexValue 
{ 
    [XmlElement(ElementName="Item1")] 
    public double Item1 {get;set;} 

    [XmlElement(ElementName="Item2")] 
    public double Item2 {get;set;} 
} 

que je veux sérialisation dans un fichier .settings.

Quand je copie le blob ci-dessous dans le fichier de paramètres, je perds l'élément ComplexValue1 en quelque sorte:

<?xml version="1.0" encoding="utf-16"?> 
<Limit> 
    <Value1>20</Value1> 
    <ComplexValue1> 
    <Item1>2.0</Item1> 
    <Item2>5.0</Item2> 
    </ComplexValue1> 
</Limit> 

à savoir Visual Studio transforme à:

<?xml version="1.0" encoding="utf-16"?> 
<Limit> 
<Value1>20</Value1> 
</Limit> 

avec un tas de namespaces que je pense ne pas grave pour la question ...

Qu'est-ce que je manque?

+0

Je connais déjà la réponse, mais je viens pour les points si vous voulez :-) –

Répondre

2
  1. Vous n'avez pas besoin de l'attribut Serializable pour sérialisation XML

  2. Je suppose que vous devez supprimer l'attribut XmlType pour résoudre le problème.

  3. Vous spécifiez un espace de noms mais il n'y en a aucun dans le fichier XML? Cela devrait également convenir.

  4. Utilisez XmlRoot pour le nœud racine si vous aimez

+1

Ces points ne résolvent pas le problème, en effet, le problème est l'habitude de VS injecter une valeur "par défaut" dans le Settings.designer. fichier cs. Mais merci pour les recommandations de toute façon ... –

0

Génération du code de la valeur par défaut peut être désactivée sur une base par-cadre dans le concepteur de réglage. Réglez simplement GenerateDefaultValueInCode sur false dans la fenêtre de propriétés pour les paramètres qui n'en ont pas besoin.