如何:创建类或结构的基本数据协定

本主题介绍使用类或结构创建数据协定的基本步骤。有关数据协定以及它们的用法的更多信息,请参见使用数据协定

有关演练创建基本 Windows Communication Foundation (WCF) 服务和客户端的步骤的教程,请参见入门教程。 有关由基本服务和客户端组成的可正常运行的示例应用程序,请参见基本数据协定

创建类或结构的基本数据协定

  1. 通过将 DataContractAttribute 属性应用于类来声明该类型具有数据协定。 请注意,包括不带属性的公共类型在内的所有公共类型都是可序列化的。 如果不存在 DataContractAttribute 属性,DataContractSerializer 将推断出一个数据协定。 有关更多信息,请参见可序列化类型

  2. 通过将 DataMemberAttribute 属性 (Attribute) 应用于每个成员来定义要序列化的成员(属性 (Property)、字段或事件)。 这些成员称为数据成员。 默认情况下,所有公共类型都是可序列化的。 有关更多信息,请参见可序列化类型

    ms733811.note(zh-cn,VS.100).gif注意:
    您可以将 DataMemberAttribute 属性应用于私有字段,这会导致向其他人公开此数据。 请确保成员不包含敏感数据。

示例

下面的示例演示如何通过将 DataContractAttributeDataMemberAttribute 属性应用于类及其成员来创建 Person 类型的数据协定。

<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 
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; }
    }
}

另请参见

任务

入门示例

参考

DataContractAttribute
DataMemberAttribute

概念

使用数据协定

其他资源

入门教程