使用Dotfuscator进行XML序列化

本文关键字:序列化 XML 进行 Dotfuscator 使用 | 更新日期: 2023-09-27 18:21:19

我正试图将几个嵌套类序列化到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一起工作。有人知道如何让它发挥作用吗?

使用Dotfuscator进行XML序列化

XML序列化使用反射,因此Dotfuscator可以重命名这些类这一事实可能会导致问题。

试试这个:

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

用这个装饰器装饰每个将被XML序列化的类。

如果您不介意混淆这些类型,请添加一个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;  
}  

或者将[Serializable]属性添加到不希望重命名的类中。

相关文章: