после долгих усилий в DI я наконец смог понять основы, но, насколько я знаю до сих пор, создание экземпляра или использование ключевого слова NEW в контроллере означает, что мы все еще не удовлетворяем DI, я создал небольшойпроект, чтобы указать на мою проблему:
public interface IOperations
{
int mul(int a, int b);
}
Реализация моего интерфейса:
public class Operations:IOperations
{
public int mul(int a,int b){
return a * b;
}
}
В моем контроллере я создаю свой конструктор:
private IOperations _ioperations;
public HomeController(IOperations _ioperations)
{
this._ioperations = _ioperations;
}
Класс обработчика:
public readonly IOperations _ioperation;
public Handeler(IOperations _ioperation)
{
this._ioperation = _ioperation;
}
Класс привязки:
public class Binding:NinjectModule
{
public override void Load()
{
Bind<IOperations>().To<Operations>();
}
}
}
и в конце мой контроллер:
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
var _operation = kernel.Get<IOperations>();
var handler = new Handeler(_operation);
var result=handler._ioperation.mul(5, 2);
Я скопировал их с сайта, который работает какс Ninject, для меня это выглядит очень странно, в моем контроллере, если вы видите, что я использую «новое» ключевое слово и создаем экземпляр, который, насколько я знаю, мы не должны делать, иначе какой смысл в DI? Кто-нибудь может мне объяснить?