2011-11-28 31 views
0

我做了什么我的代码看起来像一个简单的引擎收录演示的例子:http://pastebin.com/GpDhPRVm如何允许客户服务在WCF服务中构建复杂对象?

我的实际Process对象是极其复杂的,包括添加任务,文档,工作流,等集合到一个Process对象,并通过方法设置属性,等

PasteBin example是如此简单,因为我可以让它显示事情分解的地方。在我的服务中包含Process对象的CreateNewProcess方法(如下面的代码所示)允许服务用户在客户端的实例中自动“查看”对象,属性和枚举器。

<ServiceContract()> 
Public Interface ICreateProcess 

    <OperationContract()> 
    Sub CreateNewProcess(ByVal newprocess As Process) 

End Interface 

然而,它不允许他们使用任何的像“AddTask”方法(shown in PasteBin example)的方法和它也不会暴露TaskTaskCollection对象。即使我用DataContractOperationContract等装饰方法,它们仍然对客户端服务不可见。

这是我的主要问题:我需要的客户服务能够完全“打造”的Process对象,然后将它传递到CreateNewProcess方法。

另一个小记:(避免评论问我这件事)是,我确信,我的所有属性都是简单类型是可互操作的,因为这需要能够为Java的工作 - 不只是.NET客户端。

回答

0

好的,我从我的一个朋友那里得到了一点帮助。

无法使用.svc服务类以外的所有方法;只有属性,枚举和子对象才会转化为客户端。 (我想这个)

然后,而不是使用Collection,你必须使用通用List类型。

所以,与其这样:

Public Tasks As New TaskCollection() 'where TaskCollection inherits from Collection 

我需要做的是:

Public Tasks As List(Of Task) 

而且客户端将只需要建立自己的任务的数组,并将其分配给吨。任务属性。

这现在就像一种魅力:http://pastebin.com/rt8HwsXY

相关问题