我有一个如下的 DTO -
[Serializable()]
Public Class DTO
{
Public Exception ex {get;set;}
}
当我从 RIA 服务传递 DTO 类型的对象时,在客户端我看不到属性 ex。请帮我解决这个问题。
作为旁注,我认为异常不应直接在客户端/服务器之间发送。相反,我建议在适当的位置捕获它们并将异常信息重新格式化为更通用的格式,然后再将其发送到接收方。
至于您的实际问题,您可能遇到了 [Serializable] 功能的限制。在 MSDN 文章Windows Communication Foundation 中的序列化中它说(我强调):
[Serializable] 的默认映射与 XmlSerializer 使用的映射不同。在这里,所有字段都包含在映射中,无论是公共的还是私有的,并且从不包含属性。
您可以实现自己的支持序列化的自定义错误类。
请参阅 SO 线程How to serialize an Exception object in C#? 例如。
[编辑]
如果这太过分了,作为一个快速的胜利,你可以尝试将类定义更改为:
[DataContract]
public Class DTO
{
[DataMember]
public Exception ex {get;set;}
}