IDataContractSurrogate.GetDeserializedObject(Object, Type) Metod

Definition

Under deserialiseringen returnerar ett objekt som är ett substitut för det angivna objektet.

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

Parametrar

obj
Object

Det deserialiserade objektet som ska ersättas.

targetType
Type

Det Type som det ersatta objektet ska tilldelas till.

Returer

Det ersatta deserialiserade objektet. Det här objektet måste vara av en typ som kan serialiseras av DataContractSerializer. Den måste till exempel markeras med attributet DataContractAttribute eller andra mekanismer som serialiseraren känner igen.

Exempel

I följande exempel visas en implementering av GetDeserializedObject metoden.

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

Kommentarer

I en enkel implementering använder du en if... Sedan... else control structure för att testa om obj värdet är av surrogattyp. I så fall transformerar du det efter behov och returnerar det ersatta objektet. Det ersatta objektet kan vara en ny instans eller samma obj instans.

Gäller för