IDataContractSurrogate.GetObjectToSerialize(Object, Type) Metoda

Definicja

Podczas serializacji zwraca obiekt, który zastępuje określony obiekt.

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

Parametry

obj
Object

Obiekt do zastąpienia.

targetType
Type

Element Type , do którego powinien zostać przypisany zastąpiony obiekt.

Zwraca

Zastąpiony obiekt, który zostanie zserializowany. Obiekt musi być serializowalny przez DataContractSerializerobiekt . Na przykład musi być oznaczony atrybutem DataContractAttribute lub innymi mechanizmami rozpoznawanymi przez serializator.

Przykłady

W poniższym przykładzie przedstawiono implementację GetObjectToSerialize metody .

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

Uwagi

Ta metoda nie może zwracać, null ponieważ podczas deserializacji dane zostaną rzutowania do typu Object i InvalidCastException zostanie zgłoszony.

Dotyczy