C# 如何使用WCF序列化派生类型
我正在开发一个WebService客户端,在派生类型序列化方面遇到了一些问题 请求类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=
[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。