首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用统一注入WCF代理客户端

使用统一注入WCF代理客户端
EN

Stack Overflow用户
提问于 2015-09-30 15:55:56
回答 1查看 1.5K关注 0票数 1

我有一个wcf应用程序,需要在其中调用asp.net服务。我在项目中添加了服务引用。我将统一用于依赖注入,并希望注入wcf客户端。但这并不是因为有System.ServiceModel.ClientBase那么简单。我就是这样做的。

这是一个自动生成的代理:

代码语言:javascript
复制
public partial class WcfServiceClient : 
    System.ServiceModel.ClientBase<WcfUnity.IWcfServiceClient>, 
    WcfUnity.IWcfServiceClient 
{
    //autogenerated constructors and methods
}

我创建了界面:

代码语言:javascript
复制
public interface ISimpleProxy : WcfUnity.IWcfServiceClient
{
    //duplication of methods' signatures
    void CloseConnection();
}

我使用分部类扩展了WcfServiceClient:

代码语言:javascript
复制
public partial class WcfServiceClient : ISimpleProxy
{
    public void CloseConnection()
    {
        try
        {
            Close();
        }
        catch (Exception)
        {
            Abort();
        }
    }
}

然后像这样注射:

代码语言:javascript
复制
container.RegisterType<ISimpleProxy>(new InjectionFactory(c => new WcfServiceClient()));

所以我不依赖于ClientBase,而且在使用这个wcf代理的类中也没有wcf内容。这个解决方案有什么缺点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-30 15:59:14

不,它没有,我使用(大部分)相同的方法。

我建议您从IDisposable继承您的接口,因为底层ClientBase<T>是一次性的。这样你就不需要CloseConnection了。

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

https://stackoverflow.com/questions/32870610

复制
相关文章

相似问题

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