原则上,去掉[DataMember]后,改字段或属性将不会参与序列化,根本就不会生成任何信息,除非你连同[DataContract]也一起去掉,则会自动对所有public的属性进行序列化。
那种奇怪的现象要问svcutil工具了,你觉得不爽自己写一个类似的工具来处理,或者手动写客户端类型处理,没必要用它提供的,理解为小BUG会更容易接受。事实上所有的自定义类型都应该封装为单独的dll,同时给服务端和客户端调用,那样最容易,即使无法调用的情况,定义也直接复制服务端的,原封不动复制过来,不要用自动生成工具,那种功能只是让你入门而已,知道了原理后就可以扔掉的。