#c# #asp.net-mvc-3 #structuremap
#c# #asp.net-mvc-3 #structuremap
Вопрос:
У меня есть простое веб-приложение MVC3. Я использую StructureMap в качестве внедрения зависимостей.
Он отлично работает с моим HomeController, но когда я перехожу ко второму контроллеру, у меня возникает ошибка: missingmethod exception: конструктор нулевых параметров отсутствует.
Я следил за каждым шагом, который я нашел в руководствах…
Спасибо.
Вот код :
public class HomeController : AuthorizedController
{
IRepository<User> _repository;
public HomeController(IRepository<User> repository)
{
_repository = repository;
}
}
public class AccountController : AuthorizedController
{
private readonly IRepository<User> _repository;
public AccountController(IRepository<User> repository)
{
_repository = repository;
}
}
И я использую эту простую инъекцию:
For<IRepository<User>>().Use<UserRepository>();
Комментарии:
1. покажите код. Особенно
zero parameters constructor
. Держу пари, у вас его нет, или он недоступен (общедоступен)2. Конечно, у меня его нет… Я использую StructureMap для подключения зависимостей
3. Где находится ваша фабрика контроллеров?
Ответ №1:
Вы уверены, что он работает с HomeController? если у вас ошибка для второго контроллера, то ошибка должна присутствовать для HomeController?
Убедитесь, что ваш базовый контроллер AuthorizedController имеет общедоступный конструктор без параметров
Если вы не определяете конструктор для класса, будет создан конструктор без параметров. Однако, если вы определите конструктор с параметрами, конструктор без параметров не будет создан.
ASP.net Фабрика контроллеров MVC — System.Web.Mvc.DefaultControllerFactory.CreateController нужен конструктор без параметров
Комментарии:
1. Спасибо за ответ. Кстати: Да, он работает с HomeController. Вот чего я не понимаю.
2. ваша проблема решена? или он все еще там? не могли бы вы поделиться своим полным кодом, чтобы узнать, как он работает с home controllor?
3. Нашел проблему. Спасибо всем.
4. @user1012750 пожалуйста, объясните, как вы решили свою проблему, чтобы ответ был сохранен для потомков 🙂 (можно написать ответ на свой вопрос на SO).
5. Я пропустил конфигурацию в StructureMap. UserRepository использовал объект, который не был настроен instructuremap.