我有以下结构:
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,我是唯一一个认为这个网站上的输入字段很时髦的人吗?当我尝试格式化时,事情一直在变化......:| 很棒的网站,尽管我无法根据需要输入文本。