所有其他存储库继承的基本存储库

时间:2013-06-20 09:16:55

标签: c# asp.net-mvc asp.net-mvc-4 unity-container

我想知道是否有人可以提供一些建议。我有2个存储库,存储库A和存储库B.这两个存储库目前都有一个方法,用于设置网络凭据以连接到Web服务,但是每次调用Web服务时我都必须调用此方法,这是一个大量重复代码(每个W​​eb服务的网络凭据都是相同的)。所以我希望有更好的方法来做到这一点?

我想的是拥有一个所有其他存储库继承的基本存储库,它将实例化并设置网络凭据,以便在连接到Web服务时可以使用它们。这是一个很好的方法吗?还是有更好的方法?

添加我正在使用Unity for IOC和DI(在我的控制器中调用)

2 个答案:

答案 0 :(得分:2)

你能否拥有一个单独的类来处理调用Web服务的问题? e.g。

public class WebServiceCaller : IWebServiceCaller
{
    private NetworkCredentials credentials { get; set; }

    public WebServiceCaller()
    {
        this.credentials = new NetworkCredentials("Name", "Password");
    }

    // .. Whatever else you need.
}

因此,回购将在其构造函数中具有此功能:

public RepoA(IWebServiceCaller caller)

这样,调用Web服务和进行身份验证的责任就完全从存储库中删除了。

答案 1 :(得分:0)

我认为您走在正确的轨道上,因为您还使用了DI容器,您可以轻松实现存储库模式和工作单元。

repository and unit of work patterns