我想了解依賴注入概念。 下面是我正在嘗試調試的示例。 在這裏,我創建了客戶類的依賴關係,我的注入他的構造函數 現在當我調用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方法中工作 –