2017-08-22 2 views
0

Ich habe Klasse mit [Serializable] Attribut dekoriert. Ich erstelle ein Objekt dieser Klasse und füge es der Datentabelle hinzu. Als ich serialisiert Datentabelle BinarySerializer mit Ich erhalte Fehler alsKlasse mit [Serializable] Attribut verweigern zu serialisieren

Typ nicht implementiert IXmlSerializable Schnittstelle daher mit Serialisierung nicht ablaufen kann. Hier

ist der Beispielcode

[Serializable] 
class PropertyData 
{ 
    // Properties 
} 

class Main 
{ 
    PropertyData obj = new PropertyData(); 

    dttable.Rows.Add(val1,val2,val3, obj); 

    // ... 

    ObjbinaryFormatter.Serialize(stream, dttable); // throws exception 

} 

vorschlagen Bitte die Lösung.

+0

sein Mögen Sie einen 'DataSet', Set erstellen sollte [' RemotingFormat'] (https://msdn.microsoft.com/en-us/library/system. data.dataset.remotingformat (v = vs.110) .aspx) Eigenschaft für ['SerializationFormat.Binary'] (https://msdn.microsoft.com/en-us/library/system.data.serializationformat (v = vs .110) .aspx), füge die 'DataTable' hinzu und serialisiere'DataSet'. –

+0

Können Sie ein kompilierbares Beispiel posten? Kleine Details sind wichtig und Sie lassen zu viel weg. Versuchen Sie einige * ungewöhnliche * Typen in 'PropertyData' zu serialisieren? – Sinatr

+0

Zeigen Sie, wie Sie BinaryFormatter- und DataTable-Objekt erstellen. –

Antwort

1

BinaryFormatter erwartet die [Serializable] in Ordnung zuschreiben, aber die Ausnahme scheint nicht von BinaryFormatter zu kommen, aber von XmlSerializer. Das Problem scheint zu sein, dass die Klasse nicht öffentlich ist. Ihr Code ist jedoch nicht klar, da Sie anscheinend eine DataTable serialisieren. Versuchen Sie, Ihre DataTable in einem DataSet zu speichern und stattdessen das serialisieren.

Für eine schnelle Referenz, bitte Kasse .NET Serializers

Verwandte Themen