[英]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.