IDataContractSurrogate.GetDeserializedObject(Object, Type) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
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.