Warum wirft XmlSerializer eine InvalidOperationException?

8
%Vor%

Dies ist die ganze Klasse, wenn Sie sie brauchen:

%Vor%

(PS: Wenn Sie irgendwelche Tipps haben, um meinen Code zu verbessern, können Sie ihn teilen, ich bin ein C # Anfänger)

    
qster 23.03.2010, 07:31
quelle

4 Antworten

13

Um Ihren Typ serialisieren / deserialisieren zu können, benötigt er einen parameterlosen Konstruktor. Sehen Sie sich hier an:

  

Eine Klasse muss einen Standardkonstruktor haben, von dem serialisiert werden kann   XmlSerializer.

    
Andrew Bezzub 23.03.2010, 07:36
quelle
6

oh .. Ich wusste nicht, dass es zusätzliche Informationen hatte (musste auf "Details anzeigen" klicken.), Rätsel gelöst:

  

Message = SDB.DatabaseInformation kann nicht   serialisiert werden, weil es nicht hat   ein parameterloser Konstruktor.

    
qster 23.03.2010 07:37
quelle
1
___ antwort18991290 ___

Ich habe diese Ausnahme auch bekommen, aber es war nicht so, dass ein Standardkonstruktor fehlte. Ich hatte einige zusätzliche Eigenschaften (a List und Dictionary ), die nicht Teil des XML-Dokuments sind.

Das Dekorieren dieser Eigenschaften mit [XmlIgnore] hat das Problem für mich gelöst.

    
___ answer2498243 ___

Um Ihren Typ serialisieren / deserialisieren zu können, benötigt er einen parameterlosen Konstruktor. Sehen Sie sich hier an:

  

Eine Klasse muss einen Standardkonstruktor haben, von dem serialisiert werden kann   XmlSerializer.

    
___ qstnhdr ___ Warum wirft XmlSerializer eine InvalidOperationException? ___ answer13571569 ___

Sie können dies umgehen, indem Sie einen Standardkonstruktor bereitstellen, der den überladenen Konstruktor aufruft. Zum Beispiel:

%Vor%     
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ tag123exception ___ Eine Ausnahme ist eine ungewöhnliche Bedingung, die eine Abweichung vom normalen Ablauf des Programms erfordert. Normalerweise sollte eine Ausnahme nicht zu einem Totalausfall führen, sondern stattdessen von einem Ausnahmebehandler begleitet werden. Die Ausnahmebehandlung ist ein eingebautes Konstrukt in vielen Programmiersprachen. In der Regel werden Ausnahmen behandelt, indem der Stapel abgewickelt wird und somit in einen definierten Zustand außerhalb des Gültigkeitsbereichs der Ausnahme zurückversetzt wird und dann ein Verarbeitungsblock oder eine Routine aufgerufen wird. ___ answer2498246 ___

oh .. Ich wusste nicht, dass es zusätzliche Informationen hatte (musste auf "Details anzeigen" klicken.), Rätsel gelöst:

  

Message = SDB.DatabaseInformation kann nicht   serialisiert werden, weil es nicht hat   ein parameterloser Konstruktor.

    
___ tag123invalidoperationexception ___ Die Ausnahme, die ausgelöst wird, wenn ein Methodenaufruf für den aktuellen Status des Objekts ungültig ist. ___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ qstntxt ___
%Vor%

Dies ist die ganze Klasse, wenn Sie sie brauchen:

%Vor%

(PS: Wenn Sie irgendwelche Tipps haben, um meinen Code zu verbessern, können Sie ihn teilen, ich bin ein C # Anfänger)

    
___
Dave Andersen 24.09.2013 20:20
quelle
0

Sie können dies umgehen, indem Sie einen Standardkonstruktor bereitstellen, der den überladenen Konstruktor aufruft. Zum Beispiel:

%Vor%     
user1205577 26.11.2012 19:18
quelle