IDataContractSurrogate.GetObjectToSerialize(Object, Type) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
При выполнении сериализации возвращает объект, заменяющий указанный объект.
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
Параметры
- obj
- Object
Заменяемый объект.
Возвращаемое значение
Замененный объект, который будет сериализован. Этот объект должен быть сериализуем методом DataContractSerializer. Например, он должен быть помечен атрибутом DataContractAttribute или другими распознаваемыми сериализатором механизмами.
Примеры
В следующем примере показана реализация метода GetObjectToSerialize.
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
Комментарии
Этот метод не должен возвращать, null
так как при десериализации данные будут приведены к типу Object и InvalidCastException создается исключение .