首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加ServiceContract接口

添加ServiceContract接口
EN

Stack Overflow用户
提问于 2012-05-13 19:34:06
回答 2查看 213关注 0票数 0

我有一些接口,这是标记为[ServiceContract]的WCF服务。但在我的代码中,它也用在两个不同的非WCF位置。

问题是我使用的接口在非WCF项目中被标记为[ServiceContract]

有没有一种方法可以只在WCF上下文中拥有this属性而不复制代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-13 20:02:49

为什么要在非WCF的地方使用WCF协定定义?事实上,它是一个接口,是WCF实现细节。定义一个在其他代码中与WCF无关的接口,然后如果它需要与WCF通信,则编写一个转发到WCF接口的适配器。

这样做另一个好处是,您提供了隔离边界,因为对WCF协定的更改不必渗入到其他代码中

代码语言:javascript
复制
interface IFoo
{
    void DoSomething();
}

[ServiceContract]
interface IWCFFoo
{
    [OperationContract]
    void DoSomething();
}

class FooAdapter : IFoo
{
     IWCFFoo wrapped;

     public FooAdapter(IWCFFoo wrapped)
     {
          this.wrapped = wrapped;
     }

     public void DoSomething()
     {
          wrapped.DoSomething(); 
     }
}

此外,它还允许在IFoo和IWCFFoo上使用不同的类型,因此DataContract DTO不会渗入到其余代码中

票数 0
EN

Stack Overflow用户

发布于 2012-05-13 19:40:35

您可以使用条件编译指令:

代码语言:javascript
复制
#if WCF
[ServiceContract]
#endif
public interface ...

然后仅在您的WCF项目中定义WCF令牌。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10571377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档