首先我们要了解 web Service传递的数据只能是序列化的数据,典型的就是xml数据。个人理解就是类似于实体类对象的参数是不需要经过序列化然后传递到webService中,然后在web Service中进行反序列化后或者(XmlInclude,SoapInclude)
[NonSerialized] 不序列化
[Serializable] 序列化
XmlInclude,SoapInclude:向Web Service 里 解释你Include的几个类型,如果不解释,调用方法时会报:“使用 XmlInclude 或 SoapInclude 属性静态指定非已知的类型。”这种错误
XmlIncludeAttribute的定义如下:允许 XmlSerializer 在它序列化或反序列化对象时识别类型。所以我想是因为方法返回的类型其实是House类的子类,XmlSerializer在序列化时只能识别父类,而不能识别子类,如果有父类和子类同时出现时。应该将父类和子类都反序列化进来,所以我将[XmlInclude(typeof(SaleHouse))]和[XmlInclude(typeof(RentHouse))]同时加到WebService中。
C# Serializable
System.SerializableAttribute
串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原实例区别开来。
只需给类添加Serializable属性,就可以实现串行化实例的成员。
并行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。
例:
下面来看一个小例子,首先要添加命名空间
using System.Runtime.Serialization.Formatters.Binary;
下面的代码将对象Person进行序列化并存储到一个文件中
然后再举一个并行化的例子
如果需要对部分字段序列化部分不序列化时,我们可以按照如下设置实现
2.