Hallo, ich habe Probleme, mit einer rekursiven Funktion eine XML-Datei zu erstellen. Ich habe eine Liste mit Prozessen, die jeweils Subprozesse haben können, die wiederum Subprozesse haben können usw. Beliebige Tiefe also.
Nun möchte ich mit Hilfe einer Funktion, die ja rekursiv sein muss, eine XML-Datei erstellen, die so aussieht:
Ich habe bisher folgende Funktion, die aber nicht funktioniert. Sie liefert mir nur die oberste Ebene, nicht aber die Subprozesse. Irgendwas stimmt mit der Rekursion noch nicht. Sieht jemand den Fehler und kann mir dabei behilflich sein?
Hallo Floyd, danke für die Info. Es funktioniert jetzt, aber wenn ich das mit dem nullable so mache wie Du vorschlägst, erhalte ich die Fehlermeldung "Fehler 1 Der Typ "System.Xml.Linq.XElement" darf keine NULL-Werte zulassen, wenn er als T-Parameter im generischen Typ oder in der generischen Methode "System.Nullable<T>" verwendet werden soll. D:\Projekte\IKS\Development\Source\IKS\PD\IKSStruktur\ProzessUserCode.cs 118 31 IKS "
Ich habe XElement root jetzt als nicht nullable und übergebe beim ersten Funktionsaufruf den root ("Prozesse"). Geht das auch anders?
hmm .. du nennst die Eingangsvariable nicht "root" sondern "base" und schreibst anstelle der IF-Abfrage und Zuweisung: XElement root = (base == null) ? new XElement("Prozesse") : (XElement)base;
Oder du baust das ganze auf Klassen-Basis um und erzeugst das Root-Objektt entweder im Construktor oder beim ersten Funktionsaufruf und speicherst es in einer Klassen-Variable.
danke für die Info. Es funktioniert jetzt, aber wenn ich das mit dem nullable so mache wie Du vorschlägst, erhalte ich die Fehlermeldung "Fehler 1 Der Typ "System.Xml.Linq.XElement" darf keine NULL-Werte zulassen, wenn er als T-Parameter im generischen Typ oder in der generischen Methode "System.Nullable<T>" verwendet werden soll. D:\Projekte\IKS\Development\Source\IKS\PD\IKSStruktur\ProzessUserCode.cs 118 31 IKS
"
Ich habe XElement root jetzt als nicht nullable und übergebe beim ersten Funktionsaufruf den root ("Prozesse"). Geht das auch anders?