Ändern Sie den Namen der Klasse, die in .Net serialisiert wird?

8

Ich kann eingehende Klassennamen mithilfe von SerializationBinder und Überschreiben der BindToType -Methode zuordnen, habe jedoch keine Möglichkeit gefunden, den Namen der Klasse im Serialisierungsprozess zu ändern. Ist das überhaupt möglich?

BEARBEITEN:

Ich beziehe mich auf die Serialisierung mit dem System.Runtime.Serialization und nicht mit dem System.Xml.Serialization .

Danke!

    
Miguel Angelo 10.02.2010, 12:41
quelle

4 Antworten

6

Ich habe herausgefunden, dass ich das SerializationInfo -Objekt verwenden kann, das in der GetObjectData -Funktion kommt, und ändere die AssemblyName und FullTypeName -Eigenschaften, so dass ich beim Deserialisieren ein SerializationBinder verwenden kann die benutzerdefinierte Assembly und den Typ-Namen zurück zu einem gültigen Typ. Hier ist ein Semple:

Serialisierbare Klasse:

%Vor%

Serialisierungsbinder:

%Vor%

Serialisierungscode:

%Vor%

Deserialisierungscode:

%Vor%     
Miguel Angelo 10.02.2010, 16:35
quelle
9

Ich bin mir nicht sicher, ob ich Ihnen folge, aber Sie könnten XmlTypeAttribute verwenden. Sie können dann seine Werte durch Reflexion leicht abrufen.

%Vor%

Sieh dir das an:

Ссылка

    
Pedro 10.02.2010 12:53
quelle
2

Sie können es mit Attributen tun:

%Vor%     
Serhat Ozgel 10.02.2010 12:55
quelle
0

Sehen Sie sich einen Surrogat + Ersatz-Selektor an. Das zusammen mit einem Binder auf der Deserialisierung sollte den Trick machen.

    
MaLio 10.02.2010 14:42
quelle

Tags und Links