Сериализация XML с помощью Dotfuscator - PullRequest
3 голосов
/ 25 января 2012

Я пытаюсь сериализовать пару вложенных классов в и из файла XML.

Мои методы загрузки и сохранения используют XmlSerializer / TextWriter / TextReader.Это прекрасно работает, если я не использую Dotfuscator.Но если я использую Dotfuscator, он не сможет записать классы в файл, и я получу только корневые теги XML.

С тех пор я пытался явно назвать каждое поле следующим образом:

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

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

По сути, если он сериализован, я дал ему явное наименование.Однако я проверил это, и он все еще не работает с Dotfuscator.Кто-нибудь знает, как заставить его работать?

Ответы [ 2 ]

5 голосов
/ 25 января 2012

Сериализация XML использует отражение, поэтому тот факт, что Dotfuscator может переименовать эти классы, вероятно, вызывает проблему.

Попробуйте это:

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

Украсьте каждый класс, который будет сериализован в XML, с помощью этого декоратора.

0 голосов
/ 25 января 2012

Если вы не против скрыть эти типы, добавьте атрибут 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;  
}  
...