Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用WCF序列化派生类型_C#_Wcf_Serialization_Messagecontract - Fatal编程技术网

C# 如何使用WCF序列化派生类型

C# 如何使用WCF序列化派生类型,c#,wcf,serialization,messagecontract,C#,Wcf,Serialization,Messagecontract,我正在开发一个WebService客户端,在派生类型序列化方面遇到了一些问题 请求类 [MessageContract(WrapperName=“Request”,WrapperNamespace=”http://www.test.com“,IsWrapped=true)] 公共类服务请求 { [MessageHeader(命名空间=”http://www.test.com")] 公共AuthHeader AuthHeader{get;set;} [MessageBodyMember(Name=

我正在开发一个WebService客户端,在派生类型序列化方面遇到了一些问题

请求类

[MessageContract(WrapperName=“Request”,WrapperNamespace=”http://www.test.com“,IsWrapped=true)]
公共类服务请求
{
[MessageHeader(命名空间=”http://www.test.com")]
公共AuthHeader AuthHeader{get;set;}
[MessageBodyMember(Name=“Data”,Order=0)]
公共服务对象请求{get;set;}
公共服务请求(){}
公共服务请求(AuthHeader AuthHeader、ServiceObject请求)
{
AuthHeader=AuthHeader;
请求=请求;
}
}
服务对象类和派生类型

[XmlRoot(命名空间=”http://www.test.com")]
[xmlclude(typeof(TestRequest))]
公共抽象类ServiceObject
{ }
[XmlRoot(ElementName=“Test”,命名空间=”http://www.test.com")]
公共类测试请求
{ }
结果XML


试验
测试
要正确序列化派生类,我必须更改什么



提前感谢。

非常简单:您应该向基类添加
KnownType
属性,如下所示:

[DataContract]
[KnownType(typeof(TestRequest))]
public abstract class ServiceObject
{ }

它失败了。异常迫使我使用
xmlclude
SoapInclude
。使用
xmlclude
KnownType
生成相同的XML。