IDataContractSurrogate.GetDeserializedObject(Object, Type) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Durante la deserializzazione, restituisce un oggetto che è un sostituto dell'oggetto specificato.
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
Parametri
- obj
- Object
Oggetto deserializzato da sostituire.
Restituisce
Oggetto deserializzato sostituito. L'oggetto deve essere di un tipo che può essere serializzato da DataContractSerializer. Ad esempio, deve essere contrassegnato dall'attributo DataContractAttribute o tramite altri meccanismi riconosciuti dal serializzatore.
Esempio
Nel codice seguente viene illustrata un'implementazione del metodo 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
Commenti
In un'implementazione semplice, utilizzare una struttura di controllo If…Then…Else per verificare se il valore obj
è del tipo surrogato. In questo caso, trasformare il valore appropriatamente e restituire l'oggetto sostituito. L'oggetto sostituito può essere una nuova istanza o la stessa istanza obj
.