尝试传递包含带有接口和接口/类列表的原始类型的“复杂”类类型。
我猜有问题的成员是:
public List<IMyInterface> IntrfList
运行时错误:
接收对 http:/localhost/xxxxxx/xxxxxService.svc 的 HTTP 响应时出错。这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。
来自 MS 服务跟踪查看器 (SvcTraceViewer) 的描述性错误:
无法序列化类型“myType”。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。如果该类型是一个集合,请考虑使用 CollectionDataContractAttribute 对其进行标记。有关其他支持的类型,请参阅 Microsoft .NET Framework 文档。
我按照解释的建议做了,但没有帮助。
“共享”类:
[System.Runtime.Serialization.DataContract]
public class ServerState
{
private Queue<IJob> _mWaitingQueue;
public Queue<IJob> mWaitingQueue
{
get
{
lock (_LockObjWaiting)
{
return _mWaitingQueue;
}
}
private set
{
_mWaitingQueue = value;
}
}
private object _LockObjWaiting = new object();
private List<IJob> _mInPrograssList = new List<IJob>();
[DataMember]
public List<IJob> mInPrograssList
{
get
{
return _mInPrograssList;
}
private set
{
_mInPrograssList = value;
}
}
}
IJob 是一个接口。IJob 的结构是这样的:
IJob (Interface)
- JobBase (Abstract class)
- JobA (Driven from JobBase)
- JobB (Driven from JobBase)