IExtensibleDataObject 인터페이스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
특성으로 표시된 XmlObjectSerializer 형식을 역직렬화하는 동안 발생하는 DataContractAttribute 추가 데이터를 저장하는 데이터 구조를 제공합니다.
public interface class IExtensibleDataObject
public interface IExtensibleDataObject
type IExtensibleDataObject = interface
Public Interface IExtensibleDataObject
- 파생
예제
다음 코드는 직렬화 가능한 형식(PersonVersion2)의 두 번째 버전인 형식(Person)의 인스턴스를 보여 줍니다. 두 번째 버전에는 첫 번째 버전에 없는 추가 데이터(ID 필드)가 포함됩니다.
// 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
설명
인터페이스는 IExtensibleDataObject 데이터 계약 외부에 있는 데이터를 저장하는 데 사용되는 구조를 설정하거나 반환하는 단일 속성을 제공합니다. 추가 데이터는 클래스의 ExtensionDataObject 인스턴스에 저장되고 속성을 통해 ExtensionData 액세스됩니다. 데이터가 수신, 처리 및 다시 전송되는 왕복 작업에서 추가 데이터는 원래 보낸 사람에게 그대로 다시 전송됩니다. 이는 이후 버전의 계약에서 받은 데이터를 저장하는 데 유용합니다. 인터페이스를 구현하지 않으면 왕복 작업 중에 추가 데이터가 무시되고 삭제됩니다.
이 버전 관리 기능을 사용하려면
클래스에서 IExtensibleDataObject 인터페이스를 구현합니다.
형식에 ExtensionData 속성을 추가합니다.
클래스에 형식 ExtensionDataObject 의 프라이빗 멤버를 추가합니다.
새 프라이빗 멤버를 사용하여 속성에 대한 get 및 set 메서드를 구현합니다.
클래스에 DataContractAttribute 특성을 적용합니다. Name 및 Namespace 속성을 필요한 경우 적절한 값으로 설정합니다.
형식의 버전 관리에 대한 자세한 내용은 데이터 계약 버전 관리를 참조하세요. 정방향 호환 데이터 계약을 만드는 방법에 대한 자세한 내용은 Forward-Compatible 데이터 계약을 참조하세요. 데이터 계약에 대한 자세한 내용은 데이터 계약 사용을 참조하세요.
속성
| Name | Description |
|---|---|
| ExtensionData |
추가 데이터가 포함된 구조를 가져오거나 설정합니다. |