我正试图将几个嵌套类序列化到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一起工作。有人知道如何让它发挥作用吗?
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]属性添加到不希望重命名的类中。