Freigeben über


Vorgehensweise: Erstellen eines grundlegenden Datenvertrags für eine Klasse oder Struktur

In diesem Thema werden die grundlegenden Schritte zum Erstellen eines Datenvertrags mithilfe einer Klasse oder Struktur beschrieben. Weitere Informationen zu Datenverträgen und deren Verwendung finden Sie unter Verwendung von Datenverträgen.

Ein Tutorial, das die Schritte zur Erstellung eines grundlegenden Windows Communication Foundation (WCF)-Dienstes und -Clients erläutert, finden Sie im Tutorial „Erste Schritte“. Eine funktionsfähige Beispielanwendung, die aus einem Basisdienst und einem Client besteht, finden Sie unter Basisdatenvertrag.

So erstellen Sie einen grundlegenden Datenvertrag für eine Klasse oder Struktur

  1. Deklarieren Sie, dass der Typ einen Datenvertrag aufweist, indem Sie das DataContractAttribute-Attribut auf die Klasse anwenden. Beachten Sie, dass alle öffentlichen Typen, einschließlich der Typen ohne Attribute, serialisierbar sind. Der DataContractSerializer leitet einen Datenvertrag ab, wenn das DataContractAttribute-Attribut nicht vorhanden ist. Weitere Informationen finden Sie unter Serialisierbare Typen.

  2. Definieren Sie die zu serialisierenden Member (Eigenschaften, Felder oder Ereignisse), indem Sie das DataMemberAttribute-Attribut auf die einzelnen Member anwenden. Diese Member werden als Datenmember bezeichnet. Standardmäßig sind alle öffentlichen Typen serialisierbar. Weitere Informationen finden Sie unter Serialisierbare Typen.

    Hinweis

    Sie können das DataMemberAttribute-Attribut auf private Felder anwenden und so bewirken, dass die Daten für andere verfügbar gemacht werden. Stellen Sie sicher, dass der Member keine vertraulichen Daten enthält.

Beispiel

Das folgende Beispiel zeigt, wie Sie einen Datenvertrag für den Person-Typ erstellen, indem Sie die Attribute DataContractAttribute und DataMemberAttribute auf die Klassen und ihre Member anwenden.

using System;
using System.Runtime.Serialization;

[DataContract]
public class Person
{
    // This member is serialized.
    [DataMember]
    internal string FullName;

    // This is serialized even though it is private.
    [DataMember]
    private int Age;

    // This is not serialized because the DataMemberAttribute
    // has not been applied.
    private string MailingAddress;

    // This is not serialized, but the property is.
    private string telephoneNumberValue;

    [DataMember]
    public string TelephoneNumber
    {
        get { return telephoneNumberValue; }
        set { telephoneNumberValue = value; }
    }
}
<DataContract()> _
Public Class Person
    ' This member is serialized.
    <DataMember()> _
    Friend FullName As String

    ' This is serialized even though it is private.
    <DataMember()> _
    Private Age As Integer

    ' This is not serialized because the DataMemberAttribute 
    ' has not been applied.
    Private MailingAddress As String

    ' This is not serialized, but the property is.
    Private telephoneNumberValue As String

    <DataMember()> _
    Public Property TelephoneNumber() As String
        Get
            Return telephoneNumberValue
        End Get
        Set
            telephoneNumberValue = value
        End Set
    End Property
End Class

Siehe auch