我们的WCF服务解决方案包含三个项目:
AddressChangeBL
& AddressBL
)Address
)AddressChangeService
& AddressService
)现在,服务项目有两个独立的服务,每个服务都暴露同一个实体。当我在ASP.Net应用程序中引用服务时,通过两个不同的名称空间引用相同的实体(AddressChangeService.Address
& AddressService.Address
)
在我的代码中,我需要向两个服务发送Address
实体。首先是AddressService.IsValid
方法,然后是AddressChangeService.UpdateAddress
方法。
尽管在服务中,Address
实体是同一个类,但在ASP.Net应用程序中它们是两个不同的类。
如何解决此问题?
我知道几个解决方法,但没有一个对我们有好处:
Entities
程序集直接添加对实体的引用,而不是通过服务。这对我们来说不是一个可接受的解决方案,因为我们的要求要求我们使用WSDL创建的实体。IsValid()
方法从AddressService
移至AddressChangeService
。这是不可接受的,因为它违反了我们所希望的关注点分离。我想要一个“解决方案”而不是“解决方法,如果可能的话。”
答案 0 :(得分:1)
问题是这些课程有所不同。它们可能具有相同的签名,但它们是不同的(C#不是鸭子类型)。
原因是当您“引用”您使用“添加服务引用”的服务时。这样做是为了生成一组新的类来处理服务。由于您添加了两个服务,因此生成了两组类。
解决方案是在添加服务参考时使用“使用现有类型”选项(或类似的效果)。
但是,我不同意“关注分离”的说法。我会AddressChangeService
继承AddressService
。