Вызов методов между репозиториями - Шаблон репозитория - PullRequest
7 голосов
/ 21 марта 2009

Я использую шаблон репозитория (как примеры на сайте http://www.asp.net/mvc) в приложении ASP.NET MVC. У меня есть два репозитория, один называется CategoryRepository, другой называется ProductRepository. Я также использую две службы, CategoryService и ProductService, для проверки и вызова методов хранилища. Мне нужен список категорий в ProductService, метод, который возвращает один, уже реализован в CategoryRepository. Мой вопрос заключается в том, как правильно вызвать метод ListCategories, который существует в CategoryRepository из ProductService? Я не хочу реализовывать другой метод ListCategories в ProductRepository (философия DRY). Спасибо.

Ответы [ 2 ]

4 голосов
/ 22 марта 2009

Я бы порекомендовал свернуть подобные репозитории в один сервис. Поэтому, если вы создаете приложение электронной коммерции, сверните ProductRepository, CategoryRepository и т. Д. Во что-то вроде CatalogService и разместите в нем все связанные репозитории.

3 голосов
/ 22 марта 2009

Один из вариантов - предоставить классу ProductService экземпляр CategoryService.

public class ProductService {
    ICategoryService _categoryService = null;

    public ProductService(ICategoryService categoryService) {
        _categoryService = categoryService;
    }
}

После этого вы можете получить доступ к спискам категорий из ProductService без необходимости устанавливать прямую связь с какой-либо конкретной реализацией CategoryService.

...