Compartilhar via


IDataContractSurrogate.GetDeserializedObject(Object, Type) Método

Definição

Durante a desserialização, retorna um objeto que é um substituto do objeto especificado.

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

Parâmetros

obj
Object

O objeto desserializado a ser substituído.

targetType
Type

O Type ao qual o objeto substituído deverá ser atribuído.

Retornos

O objeto desserializado substituído. Esse objeto deve ser de um tipo serializável pelo DataContractSerializer. Por exemplo, ele deve ser marcado com o atributo DataContractAttribute ou outros mecanismos reconhecidos pelo serializador.

Exemplos

O exemplo a seguir mostra uma implementação do GetDeserializedObject método .

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

Comentários

Em uma implementação simples, use um se... Então... estrutura de controle else para testar se o obj valor é do tipo substituto. Nesse caso, transforme-o conforme necessário e retorne o objeto substituído. O objeto substituído pode ser uma nova instância ou a mesma obj instância.

Aplica-se a