1

我们的 WCF 服务解决方案由三个项目组成:

  1. 业务逻辑 ( AddressChangeBL& AddressBL)
  2. 实体 (POCO) ( Address)
  3. 服务 ( AddressChangeService& AddressService)

现在,服务项目有两个独立的服务,每个服务都暴露同一个实体。当我在 ASP.Net 应用程序中引用该服务时,通过两个不同的命名空间 ( AddressChangeService.Address& AddressService.Address)引用了同一个实体

在我的代码中,我需要向这两个服务发送一个Address实体。先看方法,再看方法。AddressService.IsValidAddressChangeService.UpdateAddress

尽管在服务中,Address实体是同一个类,但在 ASP.Net 应用程序中,它们是两个不同的类。

我该如何解决这个问题?

我知道一些解决方法,但没有一个对我们有好处:

  1. 直接使用Entities程序集添加对实体的引用,而不是通过服务。这对我们来说不是一个可接受的解决方案,因为我们的需求要求我们使用由 WSDL 创建的实体。
  2. IsValid()方法从AddressService移到AddressChangeService。这也是不可接受的,因为它违反了我们期望的关注点分离。

如果可能的话,我想要一个“解决方案”而不是“解决方法”。

4

1 回答 1

1

问题是这些类是不同的。它们可能具有相同的签名,但它们是不同的(C# 不是鸭子类型的)。

原因是当您“引用”该服务时,您使用了“添加服务引用”。它的作用是生成一组新的类来使用该服务。由于您添加了两个服务,因此生成了两组类。

解决方案是在添加服务引用时使用选项“使用现有类型”(或类似的东西)。

但是我不同意“关注点分离”的说法。我会AddressChangeService继承AddressService的。

于 2013-08-07T06:33:54.400 回答