此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

DataContractAttribute 类

2013/12/13

指定该类型定义或实现一个数据协定,并可由序列化程序(如 DataContractSerializer)进行序列化。

System.Object
  System.Attribute
    System.Runtime.Serialization.DataContractAttribute

Namespace:  System.Runtime.Serialization
程序集:  System.Runtime.Serialization(位于 System.Runtime.Serialization.dll 中)

[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Enum|AttributeTargets.Struct, Inherited = false, 
	AllowMultiple = false)]
public sealed class DataContractAttribute : Attribute

DataContractAttribute 类型公开以下成员。

  名称说明
公共方法DataContractAttribute初始化 DataContractAttribute 类的新实例。
返回顶部

  名称说明
公共属性IsReference获取或设置一个值,该值指示是否保留对象引用数据。
公共属性Name获取或设置类型的数据协定名称。
公共属性Namespace获取或设置类型的数据协定的命名空间。
返回顶部

  名称说明
公共方法Equals基础结构。 返回一个值,该值指示此实例是否与指定的对象相等。 (从 Attribute 继承。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetHashCode返回此实例的哈希代码。 (从 Attribute 继承。)
公共方法GetType获取当前实例的 Type (从 Object 继承。)
公共方法Match当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (从 Attribute 继承。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法ToString返回一个字符串,它表示当前的对象。 (从 Object 继承。)
返回顶部

DataContractAttribute 特性应用到由 DataContractSerializer 在序列化和反序列化操作中使用的类型(类、结构或枚举)。如果通过使用 Windows Phone 基础结构发送或接收消息,您也可以将 DataContractAttribute 应用到包含和操作在消息中发送的数据的任何类。

您也应将 DataMemberAttribute 应用到包含想要序列化的值的任何字段、属性或事件。通过应用 DataContractAttribute,您可以显式启用 DataContractSerializer 以序列化和反序列化数据。

数据协定

数据协定是一组具有名称的字段和每个字段的数据类型的抽象描述。数据协定存在于任何单个实现之外以允许不同平台上的服务互操作。只要在服务之间传递的数据符合相同协定,则所有服务都可处理数据。此处理也称为松耦合系统。数据协定也类似于某个接口,在该接口中,协定指定必须如何传送数据,以便应用程序可以处理数据。例如,数据协定可能调用有两个文本字段(名为 FirstNameLastName)的名为 Person 的数据类型。要创建数据协定,请将 DataContractAttribute 应用到类,并将 DataMemberAttribute 应用到必须序列化的任何字段或属性。序列化后,数据将符合隐式构建到该类型的数据协定。

说明注意:

数据协定与其继承行为中的实际接口非常不同。接口由任何派生类型继承。当您将 DataContractAttribute 应用到基类时,派生的类型不继承该特性或该行为。然而,如果派生的类型具有数据协定,则序列化基类的数据成员。但您必须将 DataMemberAttribute 应用到派生类中的新成员以使它们可序列化。

重复使用现有类型

数据协定有两个基本要求:

  • 稳定的名称。

  • 成员的列表。

稳定的名称包括命名空间统一资源标识符 (URI) 和协定的本地名称。默认情况下,当您将 DataContractAttribute 应用到类时,它使用类名作为本地名称,使用类的命名空间(具有前缀“http://schemas.datacontract.org/2004/07/”)作为命名空间 URI。可以通过设置 NameNamespace 属性来重写默认值。也可以通过将 ContractNamespaceAttribute 应用到命名空间来更改命名空间。当您拥有完全按要求处理数据但又具有不同于数据协定的命名空间和类名称的现有类型时,可使用此功能。通过重写默认值,可以重复使用现有类型并使序列化数据符合数据协定。

说明注意:

在任何代码中,都可以使用单词 DataContract 来代替较长的 DataContractAttribute


// Define the data contract.
[DataContract(Name = "Customer", Namespace = "http://www.contoso.com", IsReference = true)]
public class User
{
    [DataMember(Name = "Last", EmitDefaultValue = true, IsRequired = true, Order = 2)]
    public string Name { get; set; }

    [DataMember(Order = 1)]
    public int Age { get; set; }

    public User() { }

    public User(string newName, int newAge)
    {
        Name = newName;
        Age = newAge;
    }
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

此类型的所有公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

显示:
© 2015 Microsoft