Aracılığıyla paylaş


IDataContractSurrogate.GetDeserializedObject(Object, Type) Yöntem

Tanım

Seri durumdan çıkarma sırasında, belirtilen nesnenin yerini alan bir nesne döndürür.

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

Parametreler

obj
Object

Değiştirilecek seri durumdan çıkarılmış nesne.

targetType
Type

Değiştirilen Type nesnenin atanması gereken nesne.

Döndürülenler

Değiştirilen seri durumdan çıkarılmış nesne. Bu nesne, tarafından DataContractSerializerseri hale getirilebilen bir türde olmalıdır. Örneğin, seri hale getiricinin DataContractAttribute tanıdığı öznitelik veya diğer mekanizmalarla işaretlenmelidir.

Örnekler

Aşağıdaki örnekte yönteminin bir uygulaması gösterilmektedir 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

Açıklamalar

Basit bir uygulamada, eğer... Sonra... else değerin obj yedekli türde olup olmadığını test etmek için yapıyı denetler. Öyleyse, gerektiği gibi dönüştürün ve değiştirilen nesneyi döndürün. Değiştirilen nesne yeni bir örnek veya aynı obj örnek olabilir.

Şunlara uygulanır