IDataContractSurrogate.GetDeserializedObject(Object, Type) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt bei der Deserialisierung ein Objekt zurück, das ein Ersatz für das angegebene Objekt ist.
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
Parameter
- obj
- Object
Das zu ersetzende deserialisierte Objekt.
Gibt zurück
Das ersetzte deserialisierte Objekt. Dieses Objekt muss ein Typ sein, der über den DataContractSerializer serialisierbar ist. Er muss z. B. mit dem DataContractAttribute-Attribut oder anderen Mechanismen markiert sein, die das Serialisierungsprogramm erkennt.
Beispiele
Im folgenden Beispiel wird eine Implementierung der GetDeserializedObject-Methode veranschaulicht.
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
Hinweise
Verwenden Sie bei einer einfachen Implementierung eine If…Then…Else-Programmverzweigung, um zu testen, ob der obj
-Wert vom ersetzten Typ ist. Wenn dies der Fall ist, transformieren Sie ihn nach Bedarf, und geben Sie das ersetzte Objekt zurück. Das ersetzte Objekt kann eine neue Instanz oder die gleiche obj
-Instanz sein.