使用WCF两次公开同一个类

时间:2009-10-22 10:56:15

标签: wcf class conflict

我有2个WCF服务暴露同一个对象。让我们说第一个服务(SerA)公开一个类(classA),第二个服务(SerB)添加填充的classA也暴露了这个类(因为这个类包含在参数中)现在当我从SerA中检索classA时,它与命名空间SerA.classA连接,当我使用第二个服务添加它时,它需要一个类,如SerB.ClassA。有没有办法指定两个类是相同的。我尝试更改reference.vb中的命名空间并且它可以工作但是当更新服务引用时它将是真正的问题。任何人都可以帮助我吗?感谢

2 个答案:

答案 0 :(得分:2)

您可以将ClassA(和其他数据协定)定义放入类库中,并从两个服务中引用它。这样,两者都应该使用相同的DataContracts.ClassA定义。

将服务内容分成不同的项目总是一个好主意:

  • 服务(服务,操作,数据和可能的消息合同)到一个类库(“合同”) - 甚至可能进入多个库
  • 将服务实现放入类库
  • 服务主机 - 如果需要(不使用IIS) - 进入单独的程序集(控制台应用程序)

通过这种方式,您可以重用服务合同的某些部分以及可能的实现。

MARC

答案 1 :(得分:0)

没有回答这个呃?

问题是服务引用生成自己的类定义..

例如,我在一个公共库中有一个“ car ”类,而我在 ClientProject 中使用的 service1 wcf服务但是当我添加对service1的引用时,你得到

<强> ClientProject.Service1_ref.Car

Reference.cs

中创建

现在我不得不通过修改reference.cs来解决这个问题,每次使用公共类,真的不好。

修改 这家伙有答案,不要使用'添加服务参考',否则很容易做到:http://devx.com/codemag/Article/39837/1763/page/5 - 怪物X 0秒前编辑