AutoFac создает тип независимо от существования - PullRequest
3 голосов
/ 19 марта 2011

Я хочу использовать AutoFac для вставки ссылок в конструктор объекта.Однако сам фактический объект не зарегистрирован.Я делаю это для фабрики контроллеров ASP.NET MVC, где контроллер не будет зарегистрирован, но параметры конструктора будут.Мне удалось сделать это в единстве, но у меня проблемы с AutoFac.

Это возможно?

Спасибо.

Ответы [ 2 ]

9 голосов
/ 20 марта 2011

Чтобы Autofac разрешил любой незарегистрированный тип так, как это делает Unity:

builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());

Ранняя версия этого решения описана здесь .

Однако я добавил ответ Стивена и рекомендовал бы вам использовать его, а не выше. С Autofac вам лучше использовать встроенную интеграцию MVC. Настроить на MVC3 очень просто - см. эти пошаговые инструкции .

Даже если вы создадите собственную фабрику контроллеров, жизнь будет более предсказуемой, если вы не будете полагаться на поведение «разрешить что-либо»:)

6 голосов
/ 19 марта 2011

Autofac не может разрешить тип, который не был зарегистрирован, даже если этот тип является конкретным с помощью одного открытого конструктора.

В вашей ситуации эту проблему, однако, можно легко решить, поскольку существует Mvc3Ingegration пакет для Autofac, который содержит метод расширения RegisterControllers для компоновщика.Вы можете использовать его следующим образом:

builder.RegisterControllers(typeof(MvcApplication).Assembly);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...