Виндзорская проблема внедрения зависимости с генериками - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть интерфейс IRepo <Entity>.У меня есть общая реализация Repo<Entity>.Теперь я просто делаю следующее

Container.Register (AllTypes.FromAssemblyNamed ("assemblyname"). Pick () .WithService.DefaultInterface () .Configure (c => c.LifeStyle.PerWebRequest))

и зарегистрируйте весь интерфейс в соответствующих реализациях.Кажется, это работает нормально.

Моя проблема возникает, когда я пытаюсь быть более конкретным.Если я пытаюсь отобразить IRepo<Person> с Person, являющимся сущностью, подклассифицирующей класс, с <UserRepo>, используя

Container.Register (Component.For (IRepo<Person>). ImplementedBy (UserRepo) .LifeStyle.PerWebRequest);

Кажется, он не работает.

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

Кажется, он не работает.

1 Ответ

0 голосов
/ 28 февраля 2011

DefaultInterface не поддерживает генерики.Вы можете использовать AllInterfaces вместо или пользовательскую стратегию через Select метод

...