Freigeben über


IDataContractSurrogate.GetDeserializedObject(Object, Type) Methode

Definition

Gibt bei der Deserialisierung ein Objekt zurück, das ein Ersatz für das angegebene Objekt ist.

public:
 System::Object ^ GetDeserializedObject(System::Object ^ obj, Type ^ targetType);
public object GetDeserializedObject (object obj, Type targetType);
abstract member GetDeserializedObject : obj * Type -> obj
Public Function GetDeserializedObject (obj As Object, targetType As Type) As Object

Parameter

obj
Object

Das zu ersetzende deserialisierte Objekt.

targetType
Type

Der Type, dem das ersetzte Objekt zugewiesen werden soll.

Gibt zurück

Das ersetzte deserialisierte Objekt. Dieses Objekt muss ein Typ sein, der über den DataContractSerializer serialisierbar ist. Er muss z. B. mit dem DataContractAttribute-Attribut oder anderen Mechanismen markiert sein, die das Serialisierungsprogramm erkennt.

Beispiele

Im folgenden Beispiel wird eine Implementierung der GetDeserializedObject-Methode veranschaulicht.

public object GetDeserializedObject(Object obj , Type targetType)
{
    Console.WriteLine("GetDeserializedObject invoked");
    // This method is called on deserialization.
    // If PersonSurrogated is being deserialized...
    if (obj is PersonSurrogated)
        {
            //... use the XmlSerializer to do the actual deserialization.
            PersonSurrogated ps = (PersonSurrogated)obj;
            XmlSerializer xs = new XmlSerializer(typeof(Person));
            return (Person)xs.Deserialize(new StringReader(ps.xmlData));
        }
        return obj;
}
Public Function GetDeserializedObject(ByVal obj As Object, _
    ByVal targetType As Type) As Object Implements _
    IDataContractSurrogate.GetDeserializedObject
    Console.WriteLine("GetDeserializedObject invoked")
    ' This method is called on deserialization.
    ' If PersonSurrogated is being deserialized...
    If TypeOf obj Is PersonSurrogated Then
        Console.WriteLine(vbTab & "returning PersonSurrogated")
        '... use the XmlSerializer to do the actual deserialization.
        Dim ps As PersonSurrogated = CType(obj, PersonSurrogated)
        Dim xs As New XmlSerializer(GetType(Person))
        Return CType(xs.Deserialize(New StringReader(ps.xmlData)), Person)
    End If
    Return obj

End Function

Hinweise

Verwenden Sie bei einer einfachen Implementierung eine If…Then…Else-Programmverzweigung, um zu testen, ob der obj-Wert vom ersetzten Typ ist. Wenn dies der Fall ist, transformieren Sie ihn nach Bedarf, und geben Sie das ersetzte Objekt zurück. Das ersetzte Objekt kann eine neue Instanz oder die gleiche obj-Instanz sein.

Gilt für: