IDataContractSurrogate.GetObjectToSerialize(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 substitui o objeto especificado.
public:
System::Object ^ GetObjectToSerialize(System::Object ^ obj, Type ^ targetType);
public object GetObjectToSerialize (object obj, Type targetType);
abstract member GetObjectToSerialize : obj * Type -> obj
Public Function GetObjectToSerialize (obj As Object, targetType As Type) As Object
Parâmetros
- obj
- Object
O objeto a ser substituído.
Retornos
O objeto substituído que será serializado. O objeto deve ser 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 GetObjectToSerialize método.
public object GetObjectToSerialize(object obj, Type targetType)
{
Console.WriteLine("GetObjectToSerialize Invoked");
Console.WriteLine("\t type name: {0}", obj.ToString());
Console.WriteLine("\t target type: {0}", targetType.Name);
// This method is called on serialization.
// If Person is not being serialized...
if (obj is Person )
{
Console.WriteLine("\t returning PersonSurrogated");
// ... use the XmlSerializer to perform the actual serialization.
PersonSurrogated ps = new PersonSurrogated();
XmlSerializer xs = new XmlSerializer(typeof(Person));
StringWriter sw = new StringWriter();
xs.Serialize(sw, (Person)obj );
ps.xmlData = sw.ToString();
return ps;
}
return obj;
}
Public Function GetObjectToSerialize(ByVal obj As Object, _
ByVal targetType As Type) As Object _
Implements IDataContractSurrogate.GetObjectToSerialize
Console.WriteLine("GetObjectToSerialize Invoked")
Console.WriteLine(vbTab & "type name: {0}", obj.ToString)
Console.WriteLine(vbTab & "target type: {0}", targetType.Name)
' This method is called on serialization.
' If Person is not being serialized...
If TypeOf obj Is Person Then
Console.WriteLine(vbTab & "returning PersonSurrogated")
' ... use the XmlSerializer to perform the actual serialization.
Dim ps As New PersonSurrogated()
Dim xs As New XmlSerializer(GetType(Person))
Dim sw As New StringWriter()
xs.Serialize(sw, CType(obj, Person))
ps.xmlData = sw.ToString()
Return ps
End If
Return obj
End Function
Comentários
Esse método não deve retornar null
porque, na desserialização, os dados serão convertidos no tipo Object e um InvalidCastException é gerado.