Нет конструктора без параметров, структура карты, новая область - PullRequest
4 голосов
/ 08 декабря 2011

Я знаю, что ошибка "Не определен конструктор без параметров для этого объекта" была запрошена около миллиона раз. Моя ситуация другая

У меня есть рабочее приложение. Много много контроллеров и одна область с большим количеством контроллеров. Я только что добавил новую область. Я добавил контроллер, а затем ссылку на этот контроллер. СЕЙЧАС я получаю «Не определен конструктор без параметров для этого объекта» ошибка

Я видел и справлялся с этой проблемой раньше, но на самом деле это происходит только раз в 5 месяцев. И каждый раз я полностью забывал (подавлял) ответ.

Пожалуйста, помогите

Raif

Ответы [ 2 ]

9 голосов
/ 09 декабря 2011

Хорошо, похоже, есть несколько причин, по которым можно получить эту ошибку.Не удивительно, что ни один из них не имеет @ # $% общего с отсутствием конструктора без параметров.Мне известны следующие два факта:

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

2) и это моя ситуация сейчас, если вы вводите что-то в конструктор контроллера, а у элемента, который вы вводите, есть проблема с ним (нет никаких экземпляров илине зарегистрирован в вашей регистрации в IOC или в какой-либо другой ошибке времени выполнения) вы получите эту ошибку.

Если люди могут думать о других, они должны перечислить их здесь, потому что я думаю, что есть еще несколько причин для ошибки.R

0 голосов
/ 20 июня 2012

Хотя я понимаю, что это не совсем ответ на ваш вопрос, ваш ответ помог мне в моих усилиях по устранению неполадок.

Я только недавно столкнулся с этой же проблемой при использовании MVC Portable Areas из проекта MVC Contrib.Я обнаружил, что любые зависимости dll, которые были в переносимых областях, также должны быть включены при сканировании сборок во время регистрации в МОК, что-то вроде этого:

ObjectFactory.Initialize(x => x.Scan(y =>
    {
        y.Assembly("PortableAreaAssemblyName");
    }));
ObjectFactory.Configure(x =>
    {
        x.For<IClassInterfaceUsedByControllerConstructor>().Use<IntendedClassInstance>();
    });
...