簡體   English   中英

依賴注入如何應用於這種情況?

[英]How would dependency injection apply to this scenario?

我正在使用 Ninject 進行構造函數注入來動態創建我的具體對象。 但是,我有一個場景,其中 class 包含一個接受字符串的方法。 根據字符串的值,我想獲取一個具體的 class。 我通過創建工廠 class 來返回具體的 class 來實現這一點,但不確定這是否是最好的方法。 有什么建議么?

//Service class
public int GetEmployeeVacationDays(string employeeType)
{
  IEmployee employee = EmployeeFactory.CreateEmployee(employeeType);
  return employee.VacationDays();
}

//Factory class
public static IEmployee CreateEmployee(string employeeType)
{
   if(employeeType == "Salary")
   {
      return new SalariedEmployee();
   }
   else
   {
      return new HourlyEmployee();
   }
}

依賴注入不適用於您的方案。 這就是工廠模式。 如果您願意,您可以將 Ninject 配置為使用工廠模式來為某些對象提供依賴關系。

事實上,您可以用命名綁定完全替換工廠模式:

Bind<IEmployee>().To<FooEmployee>().Named("foo");
Bind<IEmployee>().To<BarEmployee>().Named("bar");
Bind<IEmployee>().To<BazEmployee>().Named("baz");

假設 employeeType 是有效的 class 名稱:

return System.Activator.CreateInstance(Type.GetType(className))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM