Questa documentazione è stata archiviata e non viene gestita.

Interfaccia IExtensibleDataObject

Aggiornamento: novembre 2007

Fornisce una struttura di dati in cui archiviare dati aggiuntivi rilevati da XmlObjectSerializer durante la deserializzazione di un tipo contrassegnato con l'attributo DataContractAttribute.

Spazio dei nomi:  System.Runtime.Serialization
Assembly:  System.Runtime.Serialization (in System.Runtime.Serialization.dll)

public interface IExtensibleDataObject
public interface IExtensibleDataObject
public interface IExtensibleDataObject

L'interfaccia IExtensibleDataObject fornisce un'unica proprietà che imposta o restituisce una struttura utilizzata per archiviare dati esterni a un contratto dati. I dati aggiuntivi vengono archiviati in un'istanza della classe ExtensionDataObject ed è possibile accedervi utilizzando la proprietà ExtensionData. In un'operazione roundtrip nella quale i dati vengono ricevuti, elaborati e restituiti, i dati aggiuntivi vengono restituiti invariati al mittente originale. Questo processo risulta utile per archiviare dati ricevuti da versioni future del contratto. Se non si implementa l'interfaccia, durante un'operazione roundtrip qualsiasi dato aggiuntivo viene ignorato e annullato.

Per utilizzare questa funzionalità di controllo delle versioni

  1. Implementare l'interfaccia IExtensibleDataObject in una classe.

  2. Aggiungere la proprietà ExtensionData al tipo.

  3. Aggiungere un membro privato di tipo ExtensionDataObject alla classe.

  4. Implementare metodi get e set per la proprietà utilizzando il nuovo membro privato.

  5. Applicare l'attributo DataContractAttribute alla classe. Se necessario, impostare le proprietà Name e Namespace su valori appropriati.

Per ulteriori informazioni sui tipi di controllo delle versioni, vedere Controllo delle versioni dei contratti dati. Per ulteriori informazioni sulla creazione di contratti dati compatibili con versioni successive, vedere Contratti dati compatibili con versioni successive. Per ulteriori informazioni sui contratti dati, vedere Utilizzo di contratti dati.

Il codice seguente mostra un'istanza di un tipo (PersonVersion2) che corrisponde alla seconda versione di un tipo serializzabile (Person). La seconda versione contiene dati aggiuntivi (campoID ) che non sono presenti nella prima versione.

// Implement the IExtensibleDataObject interface 
// to store the extra data for future versions.
[DataContract(
    Name = "Person",
    Namespace = "http://www.cohowinery.com/employees")]
class Person : IExtensibleDataObject
{
    // To implement the IExtensibleDataObject interface,
    // you must implement the ExtensionData property. The property
    // holds data from future versions of the class for backward
    // compatibility.
    private ExtensionDataObject extensionDataObject_value;
    public ExtensionDataObject ExtensionData
    {
        get
        {
            return extensionDataObject_value;
        }
        set
        {
            extensionDataObject_value = value;
        }
    }
    [DataMember]
    public string Name;
}

// The second version of the class adds a new field. The field's 
// data is stored in the ExtensionDataObject field of
// the first version (Person). You must also set the Name property 
// of the DataContractAttribute to match the first version. 
// If necessary, also set the Namespace property so that the 
// name of the contracts is the same.
[DataContract(Name = "Person",
    Namespace = "http://www.cohowinery.com/employees")]
class PersonVersion2 : IExtensibleDataObject
{
    // Best practice: add an Order number to new members.
    [DataMember(Order=2)]
    public int ID;

    [DataMember]
    public string Name;

    private ExtensionDataObject extensionDataObject_value;
    public ExtensionDataObject ExtensionData
    {
        get
        {
            return extensionDataObject_value;
        }
        set
        {
            extensionDataObject_value = value;
        }
    }
}


Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0
Mostra: