我正在使用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");

10-05 20:32
查看更多