XmlSerializer,Prevent xsi:Type,其他问题

时间:2018-08-14 01:01:27

标签: xml serialization soap xsitype

原始帖子:Prevent XmlSerializer from emitting xsi:type on inherited types

我正在处理SOAP,以及包含后代的ClientBase <>和Channel Factory类。在反序列化方面,我有自己的自定义序列化器(通过IXmlSerializable),但这在序列化方面没有帮助。原始请求对象具有给定共享类型的属性。 SOAP服务需要“父母”。但是,由于有许多父类共享属性,所以我创建了Parent,Parent_A,Parent_B等。当我调用ClientBase <>。Channel.DesiredServiceOperation方法时,它将处理该请求,我得到:

<Parent xsi:type="Parent_A"></Parent>

这会中断不知道Parent_A的Web服务。所以我需要删除xsi:type属性。该帖子指示XmlTypeAttribue的使用将导致属性被抑制。因此:

[XmlType("Parent")] public class Parent_A : Parent {}

但是,当我这样做时,在ClientBase <>中,当我尝试调用ChannelFactory.Open()时,出现此错误:

  

只能为该类型指定XmlRoot属性   MyNamespace.Parent_A。请使用XmlSchemaProviderAttribute指定   模式类型。

因此,我需要另一种方法来控制SOAP ClientBase <>基础结构(如果存在)调用的XmlSerializer。

谢谢 Jaeden“ Sifo Dyas” al'Raec Ruiner

0 个答案:

没有答案