2015-06-11 2 views
1

Привет Я следую ссылке ниже, http://codeclimber.net.nz/archive/2009/02/10/how-to-use-ninject-to-inject-dependencies-into-asp.net-mvc.aspxNinject 1,0 до 2,0 .only

Я получаю ошибку на линии:

kernel.Bind<IHttpController>().To<MyTESTController>() 
    .Only(When.Context.Variable("controllerName") 
    .EqualTo("CorporateRequirementsController")) 
    .InjectPropertiesWhere(p => p.Name == "ActionInvoker"); 

Я считаю, .Only синтаксис из Ninject 1.0, что является эквивалентом в 2,0?

Ошибка я получаю так:

. Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax < .../..../Controllers.CorporateRequirementsController> 'не содержит определение для 'Только' и не может быть найден метод расширения «Только», принимающий первый аргумент типа «Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax < .../.... /. Контроллеры.CorporateRequirementsController> '(вам не хватает директивы using или ссылки на сборку?

+0

Какое сообщение об ошибке вы получили? –

+0

Обновлено сообщение об ошибке – coder

ответ

1

Да, вы правы. d svn источников он находился в 1.0 - http://ninject.googlecode.com/svn/trunk/src/Core/Binding/Syntax/IBindingConditionSyntax.cs, но в текущей версии его не существует.

В their actual documentation есть несколько примеров того, как вы можете выполнить условное связывание: атрибуты \ named bindings \ when methods.

Я полагаю, что ближе всего к Only является

IBindingInNamedWithOrOnSyntax<T> When(Func<IRequest, bool> condition); 

заявил here. Таким образом, вы можете передать свою пользовательскую функцию, которая будет вызываться во время разрешения объекта, и где вы будете проверять тип контроллера. Есть также несколько перегрузок метода When для разных случаев, поэтому вы можете также проверить их.

Смежные вопросы