Ich versuche, Klasse B
als eine Instanz der ita Basisklasse A
zu serialisieren. Die DataContractSerializer
wird mir nicht erlauben, das zu tun.DataContract Serialisierung eines geerbten Typs in einen Basistyp
Ein Beispiel der Serialisierung Fehler ist wie folgt:
class Program
{
[DataContract]
public class A
{
public int Id { get; set; }
}
[DataContract]
public class B : A
{
}
static void Main(string[] args)
{
A instance = new B { Id = 42 };
var dataContractSerializer = new DataContractSerializer(typeof(A));
var xmlOutput = new StringBuilder();
using (var writer = XmlWriter.Create(xmlOutput))
{
dataContractSerializer.WriteObject(writer, instance);
}
}
}
Ich weiß, dass das Problem einfach durch das Attribut KnownTypes
hinzugefügt aufgelöst wird. Allerdings möchte ich die Klasse B
aus dem Projekt versteckt halten (keine Referenz hinzufügen).
Ist es überhaupt möglich zu erreichen, was ich will? Ich habe versucht, die XmlSerializer
, aber es gab mir das gleiche Problem (es fügte den vollständigen Namen des Instanztyps in der XML) und ist viel klunker zu verwenden.
Ist es XML sein muss? Oder muss es einfach funktionieren? –
Es kann einfach funktionieren. Minimaler Aufwand wäre aber gut. – R4cOON