Я сейчас тестирую Castle Windsor vs. Ninject, и мне очень нравится то, что Windsor может предложить, у меня просто проблема с инъекцией в репозиторий.
Итак, вот настройка ... У меня есть ControllersInstaller, который выглядит так ...
public class ControllersInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(FindControllers().Configure(ConfigureControllers()));
}
private BasedOnDescriptor FindControllers()
{
return AllTypes.FromThisAssembly()
.BasedOn<IController>()
.If(Component.IsInSameNamespaceAs<HomeController>())
.If(t => t.Name.EndsWith("Controller"));
}
private ConfigureDelegate ConfigureControllers()
{
return c => c.LifeStyle.Transient;
}
}
Контекстный установщик, который выглядит так ... Некоторые зависимости этого компонента не удалось разрешить статически. MyProject.Controllers.HomeController ожидает следующих зависимостей: Services: - MyProject.Models.MyRepo, который не был зарегистрирован.
И я не могу понять почему! Я попытался установить установщик репо как синглтон, и я попытался переупорядочить процесс регистрации, чтобы репозиторий устанавливался до контроллеров.
Когда я отлаживаю и нажимаю строку фабрики контроллера в Global.asax, он говорит, что все, кроме HomeController, имеет решено правильно.
Мысли?