1
我是新的依賴注入和Microsoft Unity IoC。我的情況是follwing:簡化Unity容器解析表達式
員工級:
class Employee
{
private readonly ISalaryCalculation _salaryCalculationCalculator;
public Employee(ISalaryCalculation salaryCalculationCalculator)
{
_salaryCalculationCalculator = salaryCalculationCalculator;
BaseSalary = 42;
}
public string Firstname { get; set; }
public string Lastname { get; set; }
public int Age { get; set; }
public int BaseSalary { get; set; }
public int CalcSalary()
{
return _salaryCalculationCalculator.CalcSalary(BaseSalary);
}
}
我有我的SalaryCalculation接口的兩種不同的實現
interface ISalaryCalculation
{
int CalcSalary(int baseSalary);
}
我統一設置爲:
static void Main(string[] args)
{
UnityContainer unityContainer = new UnityContainer();
unityContainer.RegisterType<Employee>();
unityContainer.RegisterType<ISalaryCalculation, BossSalaryCalculation>("Boss");
unityContainer.RegisterType<ISalaryCalculation, NormalSalaryCalculation>("Normal");
var employee = unityContainer.Resolve<Employee>(new DependencyOverride(typeof(ISalaryCalculation),unityContainer.Resolve<ISalaryCalculation>("Boss")));
Console.WriteLine(employee.CalcSalary());
}
有沒有更聰明的方法來實現這一點通過使用Unity?因爲每當我實例化一個新的Employee時,我必須通過其salaryCalculation邏輯。