我想了解依赖注入概念。 下面是我正在尝试调试的示例。 在这里,我创建了客户类的依赖关系,我的注入他的构造函数 现在当我调用this.Iorder.GetOrderDetails();
在Index
方法它给我错误NullReferenceException
并要求使用new
关键字来创建一个对象来调用该方法。 当我将此调用this.Iorder.GetOrderDetails();
移动到另一个方法GetCutomerDetails()
并在索引方法中调用该方法时,该方法起作用。依赖注入和使用默认构造函数
问题:我无法理解为什么this.Iorder.GetOrderDetails()
方法调用不Index
方法工作,为什么它工作在GetCutomerDetails()
public interface IorderDetails
{
void GetOrderDetails();
}
public class CustomerModel : IorderDetails
{
public void GetOrderDetails() {}
}
控制器:
public class CustomerController: Controller
{
private IorderDetails Iorder;
//DI constructor Injecting OrderDetails object
CustomerController(IorderDetails iorderObj)
{
if (iorderObj == null)
throw new ArgumentNullException("orderObj should not be null");
this.Iorder = iorderObj;
}
//Default constructor
public CustomerController() { }
public ActionResult Index()
{
CustomerController objCustomer = new CustomerController(new CustomerModel());
objCustomer.GetCutomerDetails();
//Commented GetOrderDetails() method
//this.Iorder.GetOrderDetails();
return View();
}
public ActionResult GetCutomerDetails()
{
this.Iorder.GetOrderDetails();
return View();
}
}
你的意思是依赖注射? –
你在使用什么来将IOrderDetails注入到CustomerController类中? – stuartmclark
删除默认的构造函数,你将会看到为什么你的代码不能在Index方法中工作 –