【发布时间】:2009-08-03 03:53:47
【问题描述】:
我的一个 [DataContract] 类包含一个 [DataMember],它是一个列表。 BaseClass 有几个不同的子类。
只要 List 包含任何子类的实例,就会在服务返回请求通道期间/之后发生异常。如果 List 不包含任何子类,则可以正常工作。
这是我的代码示例(它本身不起作用):
public class BaseClass
{
}
public class BaseClassSub : BaseClass
{
}
[DataContract]
public class MyClass
{
List<BaseClass> m_Classes = new List<BaseClass>();
[DataMember]
public List<BaseClass> Classes
{
get { return m_Classes; }
set { m_Classes = value; }
}
}
[ServiceContract]
public interface IMyService
{
[OperationContract]
MyClass GetMyClass();
}
public class MyService : IMyService
{
public MyClass GetMyClass()
{
MyClass o = new MyClass();
//THIS WORKS!!!!
//o.Classes = new List<BaseClass>() { new BaseClass() };
//THIS DOES NOT WORK!!!!
o.Classes = new List<BaseClass>() { new BaseClassSub() };
return o;
}
}
调试时出现如下错误:
套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。本地套接字超时为“00:00:59.6560000”。
有谁知道如何解决这个问题(让它处理子类)?
【问题讨论】:
-
请不要让我们猜测异常。发布整个异常。抓住它,然后发布 ex.ToString()。
标签: wcf exception serialization subclass datamember