XmlSerializer: So ignorieren Sie abgeleitete KlassenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 XmlSerializer: So ignorieren Sie abgeleitete Klassen

Post by Anonymous »

Ich habe zwei Klassen

Code: Select all

public class Base
{
public int val { get; set; } = 10;
}

public class Derived : Base
{
public int val2 { get; set; } = 20;
}
Dann habe ich im Hauptcode:

Code: Select all

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Base));
Derived b = new Derived();

using (var file = new StreamWriter( "test.xml" ))
{
xmlSerializer.Serialize( file, b );
}
Das funktioniert nicht, ich erhalte diese Fehlermeldung:

InvalidOperationException: Der Typ WordClockDesigner.Derived wurde nicht erwartet. Verwenden Sie das XmlInclude- oder SoapInclude-Attribut, um Typen anzugeben, die statisch nicht bekannt sind.

Jetzt frage ich mich: Warum geht es zu Derived, wenn ich ihm gesagt habe, dass es Base serialisieren soll? Es ist dumm, ich möchte nur, dass es die Eigenschaften von Base serialisiert...
NB: Dies ist ein vereinfachtes Beispiel; Mein echter Code ist komplexer und das Problem, das ich zu lösen versuche, besteht darin, Dutzende von Eigenschaften zu überspringen, nicht nur eine oder zwei. Ich muss eine Lösung finden, die funktioniert, ohne dass ich mich ewig an einen seltsamen Trick erinnern muss.
NB2: Die Verwendung von XmlSerializer(Type, Type[]) ist nicht die Lösung, weil ich die abgeleitete Klasse ausschließen möchte.
Ich verwende .NET 8

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post