C#のかなり些細なクラス構造にXMLシリアル化を追加しようとしています。基本的に、ルートクラス(AClassと呼びます)の単一のインスタンスがあり、他のクラス(AnotherClassと呼びます)のいくつかのインスタンスのリストを保持します。
[XmlRoot("RootNode")]
public class AClass {
[XmlElement("ListNode")]
internal List otherObjects { get; set; }
}
public class AnotherClass {
[XmlAttribute("Name")]
internal string name { get; set; }
}
シリアル化するときは、これら両方のクラスを一緒にシリアル化する必要があります。つまり、AClassをシリアル化すると、AnotherClassのリストもシリアル化されます(この質問を参照)。
私はこれをほとんど機能させていますが、問題は、シリアル化中に、XmlSerializerがクラスのプロパティのみを処理したいように見えることですpublic
-リストが宣言されている場合、AnotherClassはまったくシリアル化されませんinternal
。
アセンブリの内部をシリアライザーから見えるようにしてみました。
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.Xml")]
それは何もしなかったようです。XmlSerializerに、内部で宣言されたオブジェクトのリストを再帰的にシリアル化する方法はありますか?