IDataContractSurrogate.GetDeserializedObject(Object, Type) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Pendant la désérialisation, retourne un objet qui est un substitut pour l’objet spécifié.
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
Paramètres
- obj
- Object
Objet désérialisé à substituer.
Retours
Objet désérialisé substitué. Cet objet doit être d'un type qui est sérialisable par le DataContractSerializer. Par exemple, il doit être marqué avec l'attribut DataContractAttribute ou d'autres mécanismes que le sérialiseur reconnaît.
Exemples
L'exemple suivant illustre une implémentation de la méthode GetDeserializedObject.
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
Remarques
Dans une implémentation simple, utilisez une structure de contrôle if…then…else pour tester si la valeur obj
est du type substitué. Si tel est le cas, transformez-le en conséquence et retournez l'objet substitué. L'objet substitué peut être une nouvelle instance ou la même instance obj
.