IDataContractSurrogate.GetDeserializedObject(Object, Type) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Under deserialiseringen returnerar ett objekt som är ett substitut för det angivna objektet.
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
Parametrar
- obj
- Object
Det deserialiserade objektet som ska ersättas.
Returer
Det ersatta deserialiserade objektet. Det här objektet måste vara av en typ som kan serialiseras av DataContractSerializer. Den måste till exempel markeras med attributet DataContractAttribute eller andra mekanismer som serialiseraren känner igen.
Exempel
I följande exempel visas en implementering av GetDeserializedObject metoden.
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
Kommentarer
I en enkel implementering använder du en if... Sedan... else control structure för att testa om obj värdet är av surrogattyp. I så fall transformerar du det efter behov och returnerar det ersatta objektet. Det ersatta objektet kan vara en ny instans eller samma obj instans.