zoukankan      html  css  js  c++  java
  • C# DataContract DataMember

    Windows Communication Foundation (WCF) uses a serialization engine called the Data Contract Serializer by default to serialize and deserialize data (convert it to and from XML).

    data contract is a formal agreement between a service and a client that abstractly describes the data to be exchanged. 

    Serializable标记大家都很熟悉,它是XmlSerializer的标记,在WCF中其实很少用这个标记,因为我们WCF用的是DataContractSerializer,对应的标记也是DataContract

    Primitive类型默认是直接可被序列化的,自定义的类型要用DataContract序列化处理,WCF用DataContactSerializer。在WCF中一旦一个类被标记为DataContract,那么只有标记为DataMember的字段/属性才会被序列化。

    All .NET Framework primitive types, such as integers and strings, as well as certain types treated as primitives, such as DateTime and XmlElement, can be serialized with no other preparation and are considered as having default data contracts. 

    DataContract也可以有继承,但是child和parent都要有[DataContract]attribute:

    总结一下吧,WCF中应用各个标记时所作的序列化处理:

    1.          不给任何标记将会做XML映射,所有公有属性/字段都会被序列化
    2.          [Serializable]标记会将所有可读写字段序列化
    3.        [DataContract]和[DataMember]联合使用来标记被序列化的字段

    数据契约(DataContract)
    服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型。

    一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送,如下所示。

          [DataContract]

         public class UserInfo

         {

              //….

        }
    ---------------------

  • 相关阅读:
    Inner Classes with TypeScript
    设计模式(一)
    C++定义构造函数必须使用初始化列表的场合
    制作Linux下程序安装包——使用脚本打包bin、run等安装包
    Windows下将程序打包为安装包(最为简易的方式)
    在Linux中查看文件的编码及对文件进行编码转换
    libpcap文件格式分析
    static_cast, dynamic_cast, const_cast
    字符1与数字1
    Linux下的多线程编程
  • 原文地址:https://www.cnblogs.com/shiyh/p/10536778.html
Copyright © 2011-2022 走看看