如何:创建类或结构的基本数据协定
本主题介绍使用类或结构创建数据协定的基本步骤。有关数据协定以及它们的用法的更多信息,请参见使用数据协定。
有关演练创建基本 Windows Communication Foundation (WCF) 服务和客户端的步骤的教程,请参见入门教程。 有关由基本服务和客户端组成的可正常运行的示例应用程序,请参见基本数据协定。
创建类或结构的基本数据协定
通过将 DataContractAttribute 属性应用于类来声明该类型具有数据协定。 请注意,包括不带属性的公共类型在内的所有公共类型都是可序列化的。 如果不存在 DataContractAttribute 属性,DataContractSerializer 将推断出一个数据协定。 有关更多信息,请参见可序列化类型。
通过将 DataMemberAttribute 属性 (Attribute) 应用于每个成员来定义要序列化的成员(属性 (Property)、字段或事件)。 这些成员称为数据成员。 默认情况下,所有公共类型都是可序列化的。 有关更多信息,请参见可序列化类型。
注意: 您可以将 DataMemberAttribute 属性应用于私有字段,这会导致向其他人公开此数据。 请确保成员不包含敏感数据。
示例
下面的示例演示如何通过将 DataContractAttribute 和 DataMemberAttribute 属性应用于类及其成员来创建 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