2013-03-27 36 views
0

我目前正在用C#.NET开发一个WCF Web服务。我对此很新。我正在考虑如何实现某种方法,因为它需要将“外部”对象作为DataContract返回。我不确定这是如何工作的。为外部对象创建一个DataContract

我的Web服务实现了另一个第三方Web服务。原因是因为我们不允许向公众公开所有方法和数据。所以我们正在设计一个Web服务,去除第三方Web服务公开的某些数据和方法。

第三方Web服务公开这样的方法:

CourtVerdictResults GetVerdict (CourtVerdictRequest verdict); 

我的Web服务实现了方法,像这样一个精简版:

CourtVerdictResults GetVerdict (String verdictCaseNumber); 

在该方法的话,我去掉一些敏感数据,然后我应该返回CourtVerdictResults对象。

但是这个对象是在第三方Web服务中定义的。我的项目引用该Web服务,以便了解该对象。但是我自己的Web服务没有将该对象作为DataContract。那么当其他人开始使用我的Web服务时,如何返回这样的对象呢?

我是否需要做一些特殊的事情,以便其他人实现我的Web服务时,他们的代码自动知道CourtVerdictResults

回答

1

你可以使自己的CourtVerdictResults类(在不同的命名空间或名称将会发生冲突)与第三方对象相同(或与您希望的相同)。

从他们的服务中检索第三方对象,将它的值映射到对象(如果使用ValueInjector或其他类似的东西,则不重要),然后返回对象。

+0

这是唯一的方法吗?因为这个类非常庞大而且复杂,并且持有对其他对象的引用等。是不是有办法告诉我的WCF服务它应该自动从该外部Web服务的'CourtVerdictResults'生成一个数据协定? – Vivendi 2013-03-27 13:11:33

+0

第三方站点是否公开WSDL?如果是这样的话:http://stackoverflow.com/questions/2582341/how-to-convert-wsdl-file-to-class-file – 2013-03-27 13:21:12

+0

我想,如果我需要返回一个对象,然后将WSDL转换为一个类是最好的方式去(在这种情况下)。我所要做的就是将'[DataContract]'和[DataMemebers]'添加到我想要公开的属性中。 – Vivendi 2013-03-27 13:42:42