【发布时间】:2014-08-07 22:51:03
【问题描述】:
我有 Web Service 来进行 CRUD 操作。我有由 XMLProductRepository 和 SQLProductRepository 实现的 IProductRepository 接口。
现在我使用 Web 服务控制器中的存储库实例来调用分别在 XMLRepository 和 SQLRepository 中定义的 Get/Put/POST 和 Delete 操作。但是我对如何在这两个存储库之间动态更改有点困惑,因为我想让我的 Web 服务数据库不可知
public interface IProductRepository
{
IEnumerable<Product> GetAll();
Product Get(int id);
Product Add(Product item);
void Remove(int id);
bool Update(Product item);
}
public class XMLProductRepository : IProductRepository
{
public XMLProductRepository() {}
public IEnumerable<Product> GetAll() {}
public Product Get(int id) {}
public Product Add(Product item) {}
public void Remove(int id) {}
public bool Update(Product item) {}
}
public class SQLProductRepository : IProductRepository
{
public SQLProductRepository() {}
public IEnumerable<Product> GetAll() {}
public Product Get(int id) {}
public Product Add(Product item) {}
public void Remove(int id) {}
public bool Update(Product item) {}
}
public class ProductController : ApiController
{
static readonly IProductRepository repository = new XMLProductRepository();
// REST OF THE CODE AND IMPLEMENTATION HERE...
// using the repository object
}
问题是我如何在这里使其动态化,而不是在控制器中定义特定的存储库对象?或者问题是,我什至可以为这个 WEB API 做到这一点吗?
让我为问题添加更多详细信息 - 感谢 Dillie-O 指出。
我的要求是“源是互斥的。在任何时间点,服务只从 XML 或 SQL 的一个源中选择信息。服务应该能够在没有客户知识的情况下在源之间切换。除此之外每当我的源更改时,服务 WEB API 都不应更改。”
【问题讨论】:
-
花点时间阅读帮助中心的editing help。 Stack Overflow 上的格式设置与其他站点不同。您的帖子看起来越好,用户就越容易为您提供帮助。
-
只有当你知道你想要什么类型时,你才会实例化存储库。
-
我会记住您的建议。谢谢!!
标签: c# web-services asp.net-web-api repository-pattern