我正在使用 VS2010 和 .NET 4.0。
我在这里检查过(在 WCF 服务中实现的共享接口),但不同之处在于我要完成的工作涉及一个用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 响应后,我似乎无法找到确切的答案(也许我只是没有通过所有这些和他们的响应)。
如果有人能指出我正确的方向,我将不胜感激。
谢谢。