Question

J'essaie de sérialiser quelques classes imbriquées à partir d'un fichier XML.

Mes méthodes de charge et de sauvegarde Utilisez XMLSerializer / TextWriter / Textreader.Cela fonctionne bien si je n'utilise pas Dotfuscator.Mais si j'utilise Dotfuscator, il ne écrit pas les classes dans le fichier et je reçois uniquement les balises XML racine.

J'ai depuis essayé de nommer explicitement chaque champ comme SO:

[XmlRoot("ParentClass")]
public class ParentClass
{
    [XmlArray("ChildClasses")]
    public List<ChildClass> ChildClasses;
}

[XmlType("ChildClass")]
public class ChildClass
{
    [XmlElement("Property")]
    public string Property;
}

Fondamentalement, si cela devient sérialisé, je lui ai donné une nommée explicite.Cependant, j'ai testé cela et cela ne fonctionne toujours pas avec le dotfuscateur.Quelqu'un sache comment le faire fonctionner?

Était-ce utile?

La solution

La sérialisation XML utilise une réflexion, de sorte que le dotfuscateur peut renommer ces classes provoque probablement un problème.

Essayez ceci:

[Obfuscation(Feature = "renaming", Exclude = true)]
public class ParentClass
{
   ...

Décorer chaque classe qui sera XML Serialized avec ce décorateur.

Autres conseils

Si cela ne vous dérange pas de ne pas obscurcer ces types, ajoutez un attribut Exclude:

[Obfuscate(Exclude=true)]
[XmlRoot("ParentClass")]  
public class ParentClass  
{  
    [XmlArray("ChildClasses")]  
    public List<ChildClass> ChildClasses;  
}  

[Obfuscate(Exclude=true)]    
[XmlType("ChildClass")]  
public class ChildClass  
{  
    [XmlElement("Property")]  
    public string Property;  
}  

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top