У меня есть веб-служба для выполнения операции CRUD. У меня есть интерфейс IProductRepository, реализованный XMLProductRepository и SQLProductRepository.
Теперь я использую экземпляр репозитория в своем контроллере веб-службы для вызова операций Get/Put/POST и Delete, которые определены соответственно в XMLRepository и SQLRepository. Но я немного запутался в том, как динамически переключаться между этими двумя репозиториями, поскольку я хочу, чтобы моя база данных веб-сервиса не зависела
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?
Позвольте мне добавить дополнительные детали к Вопросу. Спасибо Дилли-О за указание на это.
У меня есть требование: «Источники являются взаимоисключающими. В любой момент времени служба выбирает информацию только из одного источника, будь то XML или SQL. Служба должна иметь возможность переключаться между источниками без ведома клиента. В дополнение к этому веб-API службы. не должен меняться всякий раз, когда меняется мой источник».