我的 [DataContract] 类之一包含一个 [DataMember],它是一个列表。BaseClass 有几个不同的子类。
只要该列表包含任何子类的实例,就会在服务返回请求通道期间/之后发生异常。如果列表不包含任何子类,它工作正常。
这是我的代码示例(它本身不起作用):
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”。
任何人都知道如何解决这个问题(让它处理子类)?