【发布时间】:2016-01-27 00:09:04
【问题描述】:
默认XmlSerializer(由 Visual Studio 自动提供)用于我的 Web 服务。我只是用属性来标记方法[WebMethod]和对象[Serialize()]等
有一个对象在 Web 服务和客户端之间双向传递。
该对象的成员之一(public MyClassType MyClass;) 是单向的,一次只向客户端发送值。如果客户端返回此成员集,我希望我的 Web 服务不对其进行反序列化,以便反序列化的对象包含该成员的 null 值。
做了一些研究,如果我使用的是非 XmlSerializer,那么我可以将“OnDeserialization”属性附加到对象中的一个方法,以实现我所需要的。
我试图避免这种潜在的情况。 Web 服务将对象与成员集一起发送给客户端。客户端按其应有的方式对成员进行操作。由于忘记了,客户端发回了成员未清除(NULLed)的对象。 Web 服务做了一些额外的工作并将相同的对象发回(可能稍作修改),但成员的值没有改变,因此不再是当前的,客户端应该看到它的 NULL 值以防止客户端对此采取行动再次不变的成员。 Web 服务可以为客户端应再次操作的成员设置一个新值。
对于XmlSerializer,是否有类似的简单方法?
【问题讨论】:
-
你希望成员不被反序列化,还是事后设置?防止设置容易,防止反序列化很难。
-
不被反序列化。对象从客户端返回后,在对象再次可用于 Web 服务代码时,成员应为 NULL。
-
这意味着它没有设置。我的观点是,很容易将您的
MyClassType对象反序列化然后丢弃并且永不退缩。 -
您的意思是“送回”?我将用我试图避免的情况来更新我的问题(如果可以的话,因为我是新来的)。
-
不,我的意思是“退后”。 IE。从客户端在服务器上反序列化时,不要将属性值设置回来。
标签: c# deserialization xmlserializer