Обработка многих хранилищ в замке Виндзор / Sharp Architecture - PullRequest
0 голосов
/ 21 марта 2011

Я довольно новичок в IoC и немного застрял в лучшей практике в будущем.Проект, над которым я работаю, построен в MVC с Sharp Architecture.В настоящее время мы используем IoC, чтобы указать интерфейсы репозитория в конструкторе каждого контроллера, а Castle Windsor сделает все остальное и передаст эти экземпляры в каждую модель.Однако, поскольку контроллеры могут создавать множество новых моделей, которые в свою очередь вызывают другие модели и т. Д., Они могут легко выйти из-под контроля, и некоторые контроллеры теперь имеют более 20 интерфейсов хранилища в параметрах конструктора.

Поскольку каждый контроллер наследует BaseController, я думал о создании репозитория репозитория, который представлял собой просто список репозиториев с методом Get (), который возвращает репозиторий типа T, и это может быть создано / заполнено вбазовый контроллер и просто передается в каждую модель, тогда нам не нужно беспокоиться о том, что все репозитории будут разосланы.

Однако как-то это не так, и я не могу не чувствовать, что Касл Виндзор уже должен сделать что-то подобное, но не могу понять, как.

Хотелось бы услышать ваши мыслина этом.

Спасибо.

1 Ответ

1 голос
/ 21 марта 2011

Репозиторий репозиториев, который звучит как шаблон «Единица работы».Что вы можете сделать, это внедрить IUnitOfWorkFactory, который позволяет вам создавать новые IUnitOfWork экземпляры.Экземпляр единицы работы, который содержит все репозитории.

Ищите пример такой реализации здесь .

Лично я бы не стал внедрять репозитории или даже единицырабочие экземпляры в контроллер, но внедрить службу в контроллер.Служба будет иметь в качестве зависимости единицу работы или репозитории.

...