Dela via


Gör så här: Skapa ett grundläggande datakontrakt för en klass eller struktur

Det här avsnittet visar de grundläggande stegen för att skapa ett datakontrakt med hjälp av en klass eller struktur. Mer information om datakontrakt och hur de används finns i Använda datakontrakt.

En självstudiekurs som går igenom stegen för att skapa en grundläggande WCF-tjänst (Windows Communication Foundation) och -klient finns i självstudien Komma igång. Ett arbetsexempelprogram som består av en grundläggande tjänst och klient finns i Grundläggande datakontrakt.

Skapa ett grundläggande datakontrakt för en klass eller struktur

  1. Deklarera att typen har ett datakontrakt genom att tillämpa DataContractAttribute attributet på klassen. Observera att alla offentliga typer, inklusive de utan attribut, är serialiserbara. Härleder DataContractSerializer ett datakontrakt om attributet DataContractAttribute saknas. Mer information finns i Serializable Types (Serializable Types).

  2. Definiera de medlemmar (egenskaper, fält eller händelser) som serialiseras genom att använda DataMemberAttribute attributet för varje medlem. Dessa medlemmar kallas datamedlemmar. Som standard är alla offentliga typer serialiserbara. Mer information finns i Serializable Types (Serializable Types).

    Kommentar

    Du kan använda DataMemberAttribute attributet för privata fält, vilket gör att data exponeras för andra. Se till att medlemmen inte innehåller känsliga data.

Exempel

I följande exempel visas hur du skapar ett datakontrakt för Person typen genom att tillämpa attributen DataContractAttribute och DataMemberAttribute på klassen och dess medlemmar.

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

Se även