3

XML ファイルとの間でいくつかのネストされたクラスをシリアル化しようとしています。

私の load メソッドと save メソッドは 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 Serialized される各クラスをこのデコレーターで装飾します。

于 2012-01-25T16:44:43.943 に答える
0

これらの型を難読化しても構わない場合は、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;  
}  
于 2012-01-25T16:45:51.340 に答える