我有一个WCF服务,其操作合同返回null值。那就是:它应该返回一些自定义类'ProgressReport',但在客户端应用程序中它显示为null。在WCF服务本身中,自定义类被实例化并且没有错误地返回,并且在任何时候都不会变为空。
'ProgressReport'类未定义为DataContract,因为它是在另一个程序集中定义的。
对于返回'ProgressReport'的操作,WcfTestClient通知我它无法执行操作,因为它使用类型'ProgressReport'。 我已经尝试添加一个带有System.Object的operationcontract作为返回类型,但它给了我同样的错误(无法执行操作,因为它使用类型'System.Object')
有谁知道如何解决这个问题?
答案 0 :(得分:2)
您可以尝试扩展ProgressReport
- 类(如果它没有被密封)并将其定义为DataContract
(但我认为这对于类的属性没有帮助,因为它们需要标记为DataMembers
)或创建自己的类作为一种代理并返回此对象:
[DataContract]
public class ProgressReportWcf : ProgressReport
{
}
或
[DataContract]
public class ProgressReportWcf
{
[DataMember]
public int Id { get; set; }
//aso...
public ProgressReportWcf(ProgressReport report)
{
Id = report.Id;
//aso...
}
}