Я пытаюсь реализовать цепочку декораторов для доступа к данным на основе
IRepository. У меня есть репозиторий, который делает данные
доступ (на данный момент просто список в памяти) {1}, и у меня есть тот, который
выполняет проверку {2}. Кроме того, у меня есть специализация моего
Репозиторий IUsersRepository {3}, который определяет другой метод на
Базовый интерфейс. Я работаю на последней версии багажника 5376.
Я хотел бы иметь возможность регистрировать свои компоненты, используя свободный
Интерфейс - можно ли указать, как это происходит через XML, ключ
сервис для использования в качестве innerRepo? Если так, то как? (См. Учебник по Bitter Coder Decorator
для примера XML-конфигурации). Я бы предпочел не полагаться на
порядок регистрации, кроме всего прочего.
Я подписан на этот пост .
Мне удалось заставить работать цепочку декоратора, если я спрошу
контейнер для IRepository {4}; Я вижу свой
Методы ValidatingRepository вызываются до моего доступа к данным. Но я
не смог заставить его работать, если я попрошу контейнер для
IUserRepository (я получаю InvalidCastException - я думаю, это
ожидается, но можно ли это обойти?).
Я бы хотел избежать необходимости использовать один украшенный репо и один
хранилище специализированных методов в моих сервисах; это мне кажется
подверженные ошибки. На данный момент мои специализированные методы все связаны с
выборка объектов по разным критериям - я полагаю,
Получить метод взять по отдельному критерию - это позволило бы мне иметь только
один на моем интерфейсе, и устранить необходимость в специализированных
интерфейсы. За исключением того, что мне не разрешено, потому что мы не решили
определенно использовать NHibernate. Возможно, если я сделал IRepo.Get взять
делегат или IQueryable? Есть идеи? Я бился головой
против этого все утро и не удивлюсь, если у меня есть туннель
видение, и есть другой, лучший подход; любые предложения
приветствуется!
{1} - {4} можно увидеть в утилите для копирования / вставки .