Ich versuche XML-Serialisierung zu einer ziemlich trivialen Klassenstruktur in C# hinzuzufügen. Im Wesentlichen gibt es eine einzelne Instanz einer Wurzelklasse (nennen wir es AClass), die eine Liste von mehreren Instanzen einer anderen Klasse hält (nennen wir es Andere):Serialize List <> von Klassen, die mit internem Modifikator deklariert wurden?
[XmlRoot("RootNode")]
public class AClass {
[XmlElement("ListNode")]
internal List otherObjects { get; set; }
}
public class AnotherClass {
[XmlAttribute("Name")]
internal string name { get; set; }
}
Wenn die Serialisierung, die ich für diese beiden möchten Klassen, die zusammen serialisiert werden sollen - das heißt, wenn ich AClass serialisiere, wird seine Liste von AnotherClass ebenfalls serialisiert (siehe this question).
Ich habe dies meistens funktioniert, aber das Problem ist, dass bei der Serialisierung, XmlSerializer nur mit public
Eigenschaften der Klasse beschäftigen scheint zu wollen - es ist nicht Andereüberhaupt nicht serialisiert werden, wenn die Liste internal
deklariert wird.
Ich habe versucht, die Interna sichtbar für die Serializer Versammlung machen:
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.Xml")]
, die nichts zu tun schien. Gibt es eine Möglichkeit, XmlSerializer zu erhalten, Listen von Objekten, die intern deklariert werden, rekursiv zu serialisieren?
+1 für die Frage, weil die Annahme ist, dass die Eigenschaften öffentlich sein müssen *, denn das ist, was uns gesagt wurde *. Manchmal denke ich, dass viele von uns an dem Punkt anhalten, an dem uns gesagt wird, dass wir nichts tun können, ohne nach Alternativen zu fragen. – IAbstract