【发布时间】:2013-02-17 01:51:19
【问题描述】:
我正在使用 VS2010 和 .NET 4.0。
我在这里检查过 (Sharing Interfaces that are implemented in WCF Service),但不同之处在于我要完成的工作涉及一个 标记有 ServiceContract 的接口。
即在服务中,我有一个接口 A(标记为 ServiceContract)和一个扩展接口 B(也标记为 ServiceContract)。 B 由 WCF 服务实现。
确切的扩展名是这样的:
public interface A<T>
public interface B : A<SpecificType>
(“SpecificType”被标记为 DataContract。)
显然,B 在代理生成过程中暴露给 WCF 客户端;但是,我还需要公开接口 A(我正在实现一个半通用的发布/订阅系统,并且“发布者”需要能够检查/依赖接口 A)。
我尝试解决此问题的第一种方法是创建一个单独的“共享”程序集,该程序集包含接口并且可供服务和客户端使用;但是,这最终效果不佳,因为在发布者中,它需要确保 B 的实例实际上是从 A 正确扩展的。这种隐式转换失败,可能是因为服务引用似乎并不完全使用“共享”程序集。
为了解决这个问题,我手动编辑了 Reference.cs 文件,它最终工作了(我添加了接口 A 的定义并确保接口 B 正确引用它)。但这带来了一个很大的问题,每次我更新服务引用时,这段代码都会被清除。
查看了本网站和其他网站上的其他 WCF 响应后,我似乎无法找到确切的答案(也许我只是没有了解所有这些以及他们的响应)。
如果有人能指出我正确的方向,我将不胜感激。
谢谢。
【问题讨论】:
标签: c# .net wcf inheritance publish-subscribe