C# 如何通过API(WCF).NET发送派生类型列表
我有一个服务方法,它返回一个C# 如何通过API(WCF).NET发送派生类型列表,c#,wcf,C#,Wcf,我有一个服务方法,它返回一个列表,但有时我可能会在列表中发送一个DerivedClass:BaseClass 问题是我想通过电子邮件发送信息。到目前为止,我已经: [DataContract] public class BaseClass { string Data { get; set; } } 及 但是,当客户端接收到数据时,它都是作为一个类型基类的,下面应该可以解决您的问题: [DataContract] [KnownType(typeof(DerivedClass))] pub
列表
,但有时我可能会在列表中发送一个DerivedClass:BaseClass
问题是我想通过电子邮件发送信息。到目前为止,我已经:
[DataContract]
public class BaseClass {
string Data { get; set; }
}
及
但是,当客户端接收到数据时,它都是作为一个类型
基类的,下面应该可以解决您的问题:
[DataContract]
[KnownType(typeof(DerivedClass))]
public class BaseClass {
string Data { get; set; }
}
public class DerivedClass : BaseClass
{
}
您应该将KnownType
属性添加到BaseClass
中,并更改DerivedClass的Name
,或将其删除:
[DataContract]
[KnownType(typeof(DerivedClass))]
public class BaseClass
{
string Data { get; set; }
}
[DataContract(Name="DerivedType")]
public class DerivedClass : BaseClass
{
string MoreData { get; set; }
}
您使用的是DataContract序列化还是XmlSerialization?显示您的类型定义。只要您的协定定义正确且序列化程序知道,派生类型就可以处理。@loopedcode更新了问题,很抱歉,我已设法解决了异常,但缺少数据。尝试向基类添加属性:[KnownType(typeof(DerivedClass))]
@Roma并从派生?@captainjamie中删除(Name=“BaseClass”),设置另一个名称:“DerivedType”
或其他名称。我刚刚删除了(name=“DerivedType”),一切正常。谢谢你的帮助!
[DataContract]
[KnownType(typeof(DerivedClass))]
public class BaseClass
{
string Data { get; set; }
}
[DataContract(Name="DerivedType")]
public class DerivedClass : BaseClass
{
string MoreData { get; set; }
}