我有Web服务进行CRUD操作。 我有XMLProductRepository和SQLProductRepository实施IProductRepository接口。
现在我使用的存储库实例在我的Web服务的控制器来调用获取/把/ POST和删除它们在XMLRepository和SQLRepository分别定义的操作。 但我正在逐渐如何,我想我的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每当我的源改变不应该改变“。