json知识中的数据契约

数据契约(DataContract)


服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型。
一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送。如下:

     [DataContract]

     public class UserInfo
     {
          //….
     }

只有声明为DataContract的类型的对象可以被传送,且只有成员属性会被传递,成员方法不会被传递。WCF对声明为DataContract的类型提供更加细节的控制,可以把一个成员排除在序列化范围以外,也就是说,客户端程序不会获得被排除在外的成员的任何信息,包括定义和数据。默认情况下,所有的成员属性都被排除在外,因此需要把每一个要传送的成员声明为DataMember,如下所示。

[DataContract]

    public class UserInfo

    {

        [DataMember]
        public string UserName
        {
            get;
            set;
        }

        [DataMember]
        public int Age
        {
            get;
            set;
        }

        [DataMember]
        public string Location

        {
            get;
            set;
        }

        public string Zodiac
        {
            get;
            set;
        }

}

上面这段代码把UserInfo类声明为DataContract,将UserName、Age、Location这3个属性声明为DataMember(数据成员)。Zodiac成员没有被声明为DataMember,因此在交换数据时,不会传输Zodiac的任何信息。

DataContract也支持Name/Namespace属性,如同ServiceContract,Name和Namespace可以自定义名称和命名空间,客户端将使用自定义的名称和命名空间对DataContract类型进行访问。

文章详细来源:http://www.cnblogs.com/Gavinzhao/archive/2010/06/01/1748736.html

猜你喜欢

转载自blog.csdn.net/wangyunzhao007/article/details/87371332