【发布时间】:2012-11-17 00:59:52
【问题描述】:
我有以下结构:
public class DerivedClass : List<BaseClass>
{
//Some helper methods used against the List of BaseClass properties
//Methods
public List<BaseClass> GetListOfBaseClasses()
{
return (List<BaseClass>)this;
}
}
我的 WCF 服务知道 BaseClass 对象,但客户端将其作为通用列表派生,现在当我尝试调用该服务时,如下所示:
DerivedClass classD;
FillData(classD)
List<BaseClass> baseClassList = classD.GetListOfBaseClasses();
using (IService myService = ObjectFactory.GetMyService())
{
myService.DoSomething(baseClassList); //Method is expecting "List<BaseClass>"
}
我得到以下异常:
数据协定名称为“[某些 URI 文本]”的类型“DerivedClass”不是 预期的。考虑使用 DataContractResolver 或添加任何类型 静态已知的已知类型列表 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到 传递给 DataContractSerializer 的已知类型。
我尝试以各种组合将这些属性添加到我的课程中,但仍然没有成功:
[Serializable]
[KnownType(typeof(List<BaseClass>))]
[XmlInclude(typeof(List<BaseClass>))]
[KnownType(typeof(BaseClass))]
[XmlInclude(typeof(BaseClass))]
public class DerivedClass : List<BaseClass>
{
/// ...
}
PS- Sheehs,我是唯一一个认为这个网站上的输入字段很时髦的人吗?当我尝试格式化时,事情一直在变化......:|很棒的网站,尽管我无法根据需要输入文本。
【问题讨论】:
标签: c# xml wcf serialization inherited