我有一个ASP应用程序,它调用HTTP WCF服务,该服务调用TCP WCF服务(所有服务器都在不同的服务器上)。我最终试图在三者之间传递一个类对象。
我发现我无法直接在HTTP WCF中执行此操作,即使我的类对象在BOTH WCF中的定义相同。像这样:
Public Function CallOtherFunction(ByVal ThisClass as MyClass)
Dim RetVal as Boolean
RetVal = CallMyOtherWCFFunction(ThisClass)
End Function
相反,我必须:
Public Function CallOtherFunction(ByVal ThisClass as MyClass)
Dim RetVal as Boolean
Dim MyOutgoingClass as MyOtherWCF.MyClass
MyOutgoingClass.MyString = ThisClass.MyString
RetVal = CallMyOtherWCFFunction(MyOutgoingClass)
End Function
我的对象相当大,说它们有很多属性。任何方式都不必在我的调用函数中声明一个新变量,所以我的代码可以更容易一点(如第一个例子)?
谢谢, 杰森
答案 0 :(得分:5)
你不能直接传递它,因为它们是两种不同的类型。但是,您可以在共享程序集中声明您的数据协定(由三个项目使用,或者至少由HTTP和TCP服务使用),在添加服务引用以在HTTP服务中创建代理时,您指定你想“重用引用程序集中的类型”。这样它应该在所有项目中使用相同的类型。