依赖注入如何应用于此场景?

本文关键字:应用于 注入 依赖 | 更新日期: 2023-09-27 18:01:33

我使用Ninject作为构造函数注入来动态创建我的具体对象。但是,我有一个场景,其中类包含一个接受字符串的方法。基于字符串的值,我想获得一个特定的类。我通过创建一个工厂类来返回具体类来实现这一点,但不确定这是否是最好的方法。有什么建议吗?

//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是有效的类名:

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