3

我正在尝试从 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。有谁知道如何让它工作?

4

3 回答 3

5

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

试试这个:

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

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

于 2012-01-25T16:44:43.943 回答
0

如果您不介意混淆这些类型,请添加排除属性:

[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;  
}  
于 2012-01-25T16:45:51.340 回答
0

Or add the [Serializable] attribute to the classes you don't want renamed.

于 2021-03-18T09:52:51.930 回答