c# - 依赖注入(inject)如何应用于这种情况?

标签 c# asp.net-mvc dependency-injection ninject

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

//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();
   }
}

最佳答案

依赖注入(inject)不适用于您的场景。这就是工厂模式。如果您愿意,您可以将 Ninject 配置为使用工厂模式来提供依赖项。

事实上,您可以使用命名绑定(bind)完全替换工厂模式:

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

关于c# - 依赖注入(inject)如何应用于这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6635198/

相关文章:

c# - 在 C# 中包装 Visual C++

c# - IEquatable 实现和运算符覆盖

asp.net - 微软MVC "echo/print/output"等

c# - asp.net MVC Controller 不保留我的内存数据库

java - 如何使用 GinFactoryModuleBuilder 从 Google Gin 获取扩展子类?

c# - 为什么 Int32.TryParse 为数字返回 false?

c# - 在 MVVMLight 中接收派生类型的消息

html - Tag Helper 中的 MVC Core HTML Bootstrap 按钮

c# - 如何使用 .NET Core 依赖注入(inject)在运行时解析服务和注入(inject)额外的构造函数参数?

c# - 返回抽象泛型类型的适当具体类型