我正在使用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();
}
}
答案 0 :(得分:3)
依赖注入不适用于您的方案。这是工厂模式。如果您要使用某些对象,可以将Ninject配置为使用工厂模式来提供依赖关系。
实际上,您可以使用命名绑定替换工厂模式:
Bind<IEmployee>().To<FooEmployee>().Named("foo");
Bind<IEmployee>().To<BarEmployee>().Named("bar");
Bind<IEmployee>().To<BazEmployee>().Named("baz");
答案 1 :(得分:2)
假设employeeType是有效的类名:
return System.Activator.CreateInstance(Type.GetType(className))