Регистрация универсальных типов в контейнере Windsor - PullRequest
1 голос
/ 23 августа 2010

Мне нужно зарегистрировать открытый универсальный тип в моем Виндзорском контейнере.Как это работает?

container.Register(Component.For>().UsingFactoryMethod(x => x.Resolve().GetRepository<??>()));

По сути, я хочу зарегистрировать IRepository как открытый универсальный, а затем создать репозиторий из IDataContext на основе переданного универсального типа.Это поддерживается?

1 Ответ

2 голосов
/ 24 августа 2010

При регистрации открытого универсального метода используйте неуниверсальный метод:

Component.For(typeof(IRepository<>))...

При разрешении с помощью UsingFactoryMethod вы можете иметь доступ к запрашиваемому типу, поэтому вы можете передать тип в GetRepository и разрешить хранилище на основе типа (объект System.Type), который вы передаете.

Как знаменатель, я должен сказать, что нахожу ваш дизайн довольно необычным. Чаще всего хранилище содержит ссылку на контекст данных, а не наоборот. Возможно, вы захотите еще раз взглянуть на дизайн?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...