IExtensibleDataObject Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje datovou strukturu pro ukládání dodatečných dat zjištěných XmlObjectSerializer při deserializaci typu označeného atributem DataContractAttribute .
public interface class IExtensibleDataObject
public interface IExtensibleDataObject
type IExtensibleDataObject = interface
Public Interface IExtensibleDataObject
- Odvozené
Příklady
Následující kód ukazuje instanci typu (PersonVersion2), která je druhou verzí serializovatelného typu (Person). Druhá verze obsahuje další data (ID pole), která nejsou k dispozici v první verzi.
// 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;
}
}
}
' Implement the IExtensibleDataObject interface
' to store the extra data for future versions.
<DataContract(Name := "Person", [Namespace] := "http://www.cohowinery.com/employees")> _
Class Person
Implements 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_value As ExtensionDataObject
Public Property ExtensionData() As ExtensionDataObject _
Implements IExtensibleDataObject.ExtensionData
Get
Return extensionDataObject_value
End Get
Set
extensionDataObject_value = value
End Set
End Property
<DataMember()> _
Public Name As String
End Class
' 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
Implements IExtensibleDataObject
' Best practice: add an Order number to new members.
<DataMember(Order:=2)> _
Public ID As Integer
<DataMember()> _
Public Name As String
Private extensionDataObject_value As ExtensionDataObject
Public Property ExtensionData() As ExtensionDataObject _
Implements IExtensibleDataObject.ExtensionData
Get
Return extensionDataObject_value
End Get
Set
extensionDataObject_value = value
End Set
End Property
End Class
Poznámky
Rozhraní IExtensibleDataObject poskytuje jednu vlastnost, která nastavuje nebo vrací strukturu použitou k ukládání dat, která jsou externí pro kontrakt dat. Další data jsou uložena v instanci ExtensionDataObject třídy a je k nim přistupováno prostřednictvím vlastnosti ExtensionData. V operaci zpracování, při které se data přijímají, zpracovávají a pak odesílají zpět, se dodatečná data odesílají zpět původnímu odesílateli beze změny. To je užitečné k ukládání dat přijatých z budoucích verzí kontraktu. Pokud rozhraní neimplementujete, jakákoliv další data se během operace zpětného přenosu ignorují a zahodí.
Použití této funkce správy verzí
Implementujte IExtensibleDataObject rozhraní ve třídě.
ExtensionData Přidejte vlastnost do svého typu.
Přidejte do třídy soukromý člen typu ExtensionDataObject .
Implementujte metody get a set pro vlastnost pomocí nového privátního atributu.
Použijte atribut DataContractAttribute na třídu. Nastavte vlastnosti Name a Namespace na odpovídající hodnoty v případě potřeby.
Další informace o správě verzí typů najdete v tématu Správa verzí kontraktů dat. Informace o vytváření kontraktů dat kompatibilních s budoucími verzemi najdete v tématu Forward-Compatible Kontrakty dat. Další informace o kontraktech dat naleznete v tématu Použití kontraktů dat.
Vlastnosti
| Name | Description |
|---|---|
| ExtensionData |
Získá nebo nastaví strukturu, která obsahuje další data. |